¿Cómo utilizar XMLDOMDocument para generar un fragmento de código xml?
1.
BOOL CXmlApp::InitInstance()
{
AfxOleInit()
. ..
}
2
#importar
3. CXmlDlg::OnButton1()
{
// TODO: Agregue el código del controlador de notificaciones de control aquí
MSXML2::IXMLDOMDocumentPtr pDoc
MSXML2::IXMLDOMElementPtr xmlRoot;
//Crear objeto DOMDocument
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); if(!SUCCEEDED(hr))
{
MessageBox("No se puede crear el objeto DOMDocument, verifique si el tiempo de ejecución del analizador MS XML está instalado!"); p>}
//El nombre del nodo raíz es china
pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot
);pDoc->raw_appendChild(xmlRoot, NULL);
MSXML2::IXMLDOMElementPtr childNode;
pDoc->raw_createElement((_bstr_t)(char*)"Ciudad", &childNode );
childNode->Puttext("WuHan");//Valor del nodo
childNode->setAttribute("population","8,000,000");//Nombre del atributo, atributo valor
childNode->setAttribute("area","10000");
xmlRoot->appendChild(childNode);
pDoc->raw_createElement(( _bstr_t) (char*)"Ciudad", &childNode);
childNode->Puttext("ShangHai");
childNode->setAttribute("población","12.000.000") ;
childNode->setAttribute("area","12000");
xmlRoot->appendChild(childNode);
//Guardar en archivo
//Si no existe, créelo, si existe, sobrescríbalo
pDoc->save("f:\he.xml"); p>}
El he.xml generado es el siguiente:
una
---------------También Hay un ejemplo
#include "stdafx.h"
#include "iostream.h"
#include "msxml.h"
#include "atlbase.h"
#import "msxml.dll" //Introduce la biblioteca de tipos
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__
#endif
int Salir(); >
void LoadFromString();
void CreateXML();
//plantilla de texto XML
_bstr_t XMLTemple=" -11 9 "; /p >
int main()
{
cout << "Programación XML - programa de demostración" << endl
CoInitialize(NULL; ); //Inicializa el entorno COM
cout << "------Generar nuevo texto XML------" << endl
CreateXML();
cout << "------Leer texto XML existente------" << endl
LoadFromString(); >return Salir();
}
void CreateXML()
{
MSXML::IXMLDOMDocumentPtr pDoc;
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
if(!SUCCEEDED(hr))
{
cout << "No se puede crear el objeto DOMDocument, verifique si la biblioteca de tiempo de ejecución de MS XML Parser está instalada". << endl
Salir()
}
<; p> MSXML::IXMLDOMElementPtr pDocElement=pDoc->createElement("China");pDoc->appendChild(pDocElement);
cout << "Generando raíz del árbol:\n " < < pDoc->xml << endl;
MSXML::IXMLDOMElementPtr pNewChildElement;
pNewChildElement=pDoc->createElement("Pekín");
pNewChildElement- >Puttext("-11");
pDocElement->appendCh
ild(pNewChildElement);
cout << "Agregar nodo:\n" << pDoc->xml << endl
pNewChildElement=pDoc->createElement("Shanghái")
pNewChildElement->Puttext("9");
pNewChildElement->setAttribute("Tiempo",_variant_t("Nublado")); ->appendChild(pNewChildElement);
cout << "Agregar otro nodo:\n" << pDoc->xml << endl;
pDocElement->removeChild (pNewChildElement);
cout << "Eliminar el nodo recién agregado:\n" << pDoc->xml << endl
}
void LoadFromString()
{
MSXML::IXMLDOMDocumentPtr pDoc;
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); if(!SUCCEEDED(hr))
{
cout << "No se puede crear el objeto DOMDocument, verifique si el tiempo de ejecución del analizador MS XML está instalado". /p>
Salir();
}
pDoc->loadXML(XMLTemple);
cout << "Leer resultado:\n " << pDoc->xml << endl;
MSXML::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement();
MSXML::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode(" Shangai ");
pDocElement->removeChild(pElement);
cout << "Ubicar y eliminar el nodo de Shanghai:\n" << pDoc->xml << endl; p>
cout << "Guardar el resultado....(sólo simulación)" << endl
cout << "\n Está bien, es así de simple" << endl p>
}
int Salir()
{
getchar()
return 1;
p>
}