MSXML en vc++
Publicado por Ernesto Badillo (1 intervención) el 18/08/2001 11:30:43
Estoy buscando ejemplos y/o guias para usar MSXML desde vc++. Espero que alguien me pueda ayudar.
Valora esta pregunta


0
#include <msxml6.h> // Para MSXML 6.0
#pragma comment(lib, "msxml6.lib") // Vincula la biblioteca
#include <iostream>
#include <msxml6.h>
#pragma comment(lib, "msxml6.lib")
int main() {
// Inicializa COM
CoInitialize(NULL);
// Crea un objeto DOMDocument
IXMLDOMDocument* pDoc = NULL;
HRESULT hr = CoCreateInstance(__uuidof(DOMDocument60), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDoc));
if (SUCCEEDED(hr)) {
// Cargar el archivo XML
VARIANT_BOOL loadSuccess;
hr = pDoc->load(_bstr_t("ruta/a/tu/archivo.xml"), &loadSuccess);
if (loadSuccess == VARIANT_TRUE) {
// Obtener el nodo raíz
IXMLDOMNode* pRoot = NULL;
pDoc->get_documentElement(&pRoot);
// Obtener los nodos hijos
IXMLDOMNodeList* pNodeList = NULL;
pRoot->selectNodes(_bstr_t("tuNodoHijo"), &pNodeList);
// Iterar sobre los nodos
long length;
pNodeList->get_length(&length);
for (long i = 0; i < length; i++) {
IXMLDOMNode* pNode = NULL;
pNodeList->get_item(i, &pNode);
// Obtener el valor del nodo
BSTR nodeValue;
pNode->get_text(&nodeValue);
std::wcout << nodeValue << std::endl;
// Liberar el nodo
SysFreeString(nodeValue);
pNode->Release();
}
// Liberar recursos
pNodeList->Release();
pRoot->Release();
} else {
std::cerr << "Error al cargar el archivo XML." << std::endl;
}
// Liberar el documento
pDoc->Release();
} else {
std::cerr << "Error al crear el objeto DOMDocument." << std::endl;
}
// Finaliza COM
CoUninitialize();
return 0;
}