¿Cómo escribir un archivo XML simple en lenguaje C?
Usando VC, aquí hay un ejemplo, puede consultar:
void?CreateXml()
{
CoInitialize(NULL ) ;
/?Crear documento
MSXML2::IXMLDOMDocument2Ptr?pXMLDoc?=?NULL;
//Crear objeto DOMDocument
HRESULT ?hr?=?pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if(!SUCCEEDED(hr))
{
return
}
//?
MSXML2::IXMLDOMProcessingInstructionPtr?pXMLProc?=?NULL;
pXMLProc?=?pXMLDoc- > createProcessingInstruction("xml",?" version='1.0'?encoding='UTF-8'");
_variant_t?vNullVal;
vNullVal.vt?=?VT_NULL
pXMLDoc->insertBefore(pXMLProc, ?vNullVal);
/?Crear nodo raíz
_variant_t?varNodeType((short)MSXML2::NODE_ELEMENT)
MSXML2::IXMLDOMNodePtr?pXMLNodeRoot=?NULL;?
pXMLNodeRoot?=?pXMLDoc->createNode(varNodeType,?_T("Casos"),?_T("" ) );
/?Agregar nodo raíz
pXMLDoc->appendChild(pXMLNodeRoot);
/?Crear y agregar nodos subordinados
MSXML2::IXMLDOMNodePtr?pXMLNodeNode=?NULL;?
pXMLNodeNode?=?pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Case"));
/? Crear nodo de elemento subordinado
MSXML2::IXMLDOMElementPtr?pXMLEle?=?NULL;
pXMLEle?=?pXMLDoc->createElement(_T("CopyFile")))
/?Crear y establecer atributos de nodo subordinado
MSXML2::IXMLDOMAttributePtr?pXMLAttr?=?NULL;
pXMLAttr?=?pXMLDoc->createAttribute(_T("src" ) );
pXMLAttr->nodeTypedValue?=?"C:\test.txt";
pXMLLele->atributos->setNamedItem(pXMLAttr);
pXMLAttr?=?pXMLDoc->createAttribute(_T("dest"));< /p>
pXMLAttr->nodeTypedValue?=?"D:\\Test.
txt";
pXMLEle->atributos->setNamedItem(pXMLAttr);
//?Agregar nodo de elemento
pXMLNodeNode->appendChild(?pXMLEle);
MSXML2::IXMLDOMElementPtr?pXMLEle1?=?NULL;
pXMLEle1?=?pXMLDoc->createElement(_T("DelFile"));
pXMLEle1 ->appendChild(pXMLDoc->createTextNode("C:\\test.txt"));
/?Agregar nodo de elemento
pXMLNodeNode->appendChild(?pXMLEle1); /p>
//?Guardar documento
pXMLDoc->save(_T("d:\Test.xml"));
}
El efecto es el siguiente:
?
Para que MFC reconozca MSXML2, necesitamos introduzca la dll correspondiente. El código es el siguiente: #import "msxml4.dll"?