Neste post o problema esta relacionado com COM (Component Object Model) e com o MSXML. Na realidade neste exemplo temos dois problemas.
Prepare suas ferramentas e boa sorte!
0: #define _WIN32_WINNT 0x500
1:
2: #include <windows.h>
3: #include <atlbase.h>
4: #include <atlcom.h>
5:
6: #import "msxml3.dll" raw_interfaces_only
7:
8: void main()
9: {
10: CoInitializeEx(NULL, COINIT_MULTITHREADED);
11: CComPtr<MSXML2::IXMLDOMDocument> doc;
12:
13: HRESULT hr;
14: hr = doc.CoCreateInstance(__uuidof(MSXML2::DOMDocument30));
15: if (SUCCEEDED(hr))
16: {
17: VARIANT_BOOL sucesso;
18: hr=doc->load(CComVariant(L"c:\\Teste.xml"), &sucesso);
19: if (SUCCEEDED(hr) && sucesso != VARIANT_FALSE)
20: {
21: CComPtr<MSXML2::IXMLDOMNode> item;
22: hr = doc->selectSingleNode(CComBSTR(L"//a/b/c"), &item);
23: if (SUCCEEDED(hr))
24: {
25: // Faz alguma coisa com o nó apontado por 'item'.
26: }
27: }
28: }
29:
30: CoUninitialize();
31: }
[+/-] mostrar/esconder este post
3 Comments:
Heya! Não manjo nada de MSXML ou COM, mas percebi q esta faltando algo essencial no seu blog...
FIRST POST!!!
:)
By Anônimo, at 9:52 AM
Na realidade eu coloquei um first post (talvez não seja claro, ou talvez eu não tenha entendido o que é um "first post" :)
By programing-fun, at 3:56 PM
Bom, só olhando percebi duas coisas: Fazer o CoUninitialize sem fazer o Release do CComPtr vai dar alguma bobagem quando o 'destructor' da classe for chamado. A segunda é que se não me engano o selectSingleNode (e o selectNodes) devolvem HRESULT == S_OK mesmo que os nodes da query não existem (voltam NULL ou node vazio, não me lembro). Fora isso nem...
By Anônimo, at 11:43 AM
Postar um comentário
<< Home