C/Visual C - MSXML en vc++

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ejemplos y guías para usar MSXML desde Visual C++

Publicado por Alejandro (913 intervenciones) el 11/10/2024 19:43:06
Ernesto, MSXML es una biblioteca de Microsoft que permite trabajar con XML en aplicaciones de Visual C++. A continuación, te proporciono un ejemplo básico de cómo usar MSXML para cargar y manipular un archivo XML.

1. Configura tu proyecto


Asegúrate de que tu proyecto esté configurado para usar MSXML. Puedes hacerlo incluyendo la biblioteca correspondiente en tu proyecto.

2. Incluir las cabeceras necesarias


Asegúrate de incluir las cabeceras de MSXML en tu archivo de código:

1
2
#include <msxml6.h> // Para MSXML 6.0
#pragma comment(lib, "msxml6.lib") // Vincula la biblioteca

3. Ejemplo de uso de MSXML


Aquí tienes un ejemplo de cómo cargar un archivo XML, leer sus nodos y mostrar su contenido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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;
}

Explicación:


1. Inicializar COM: Usa `CoInitialize` para inicializar la biblioteca COM.
2. Crear el objeto DOMDocument: Utiliza `CoCreateInstance` para crear una instancia de `DOMDocument60`.
3. Cargar el archivo XML: Usa el método `load` para cargar el archivo XML. Asegúrate de proporcionar la ruta correcta.
4. Obtener el nodo raíz: Usa `get_documentElement` para obtener el nodo raíz del documento.
5. Seleccionar nodos: Usa `selectNodes` para seleccionar nodos hijos específicos.
6. Iterar sobre los nodos: Recorre los nodos y obtén su valor con `get_text`.
7. Liberar recursos: Asegúrate de liberar todos los recursos utilizados.

Notas:


- Asegúrate de tener el archivo XML en la ruta especificada.
- Puedes modificar la consulta XPath en `selectNodes` para adaptarla a tu archivo XML.
- Este ejemplo utiliza MSXML 6.0, pero puedes usar versiones anteriores si es necesario, cambiando el `__uuidof(DOMDocument60)` por la versión correspondiente.

Con este ejemplo, deberías poder comenzar a trabajar con MSXML en tu aplicación de Visual C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar