装了MSXML 4.0 SP2控制台可以输出,但是磁盘上没文件,这是怎么回事啊,怎么把XML文件写到磁盘上啊#include "stdafx.h"
#include <stdio.h>
#import <msxml4.dll>
#include <msxml2.h>
using namespace MSXML2;int _tmain(int argc, _TCHAR* argv[])
{
MSXML2::IXMLDOMDocument2Ptr pXMLDom;
HRESULT hr;
CoInitialize(NULL);
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument));
if (FAILED(hr))
{
printf("Failed to CreateInstance on an XML DOM");
return NULL;
}
pXMLDom->preserveWhiteSpace = VARIANT_TRUE;
// Create a processing instruction targeted for xml.
MSXML2::IXMLDOMProcessingInstructionPtr pi;
pi = pXMLDom->createProcessingInstruction("xml", "version='1.0'");
if (pi != NULL) {
pXMLDom->appendChild(pi);
pi.Release();
}
// Create a processing instruction targeted for xml-stylesheet.
pi = pXMLDom->createProcessingInstruction("xml-stylesheet",
"type='text/xml' href='dom.xsl'");
if (pi != NULL) {
pXMLDom->appendChild(pi);
pi.Release();
}
// Create a comment for the document.
MSXML2::IXMLDOMCommentPtr pc;
pc = pXMLDom->createComment("sample xml file created using XML DOM object.");
if (pc != NULL) {
pXMLDom->appendChild(pc);
pc.Release();
}
// Create the root element (i.e., the documentElement).
MSXML2::IXMLDOMElementPtr pe;
pe = pXMLDom->createElement("root");
// Create a "created" attribute for the root element and
// assign the "using dom" character data as the attribute value.
MSXML2::IXMLDOMAttributePtr pa;
pa = pXMLDom->createAttribute("created");
if (pa != NULL)
{
pa->value = "using dom";
pe->setAttributeNode(pa);
pa.Release();
}
// Add the root element to the DOM instance.
pXMLDom->appendChild(pe);
pe.Release();
// Next, we will create and add more nodes to the root element
// we've just created.
// Create an element to hold text content.
pe = pXMLDom->createElement("node1");
if (pe != NULL)
{
// Add newline + tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
pe->text = "some character data";
pXMLDom->documentElement->appendChild(pe);
pe.Release();
}
// Create an element to hold a CDATA section.
pe=pXMLDom->createElement("node2");
if (pe != NULL)
{
// Add newline + tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
MSXML2::IXMLDOMCDATASectionPtr pcd;
pcd = pXMLDom->createCDATASection("<some -up text>");
if (pcd != NULL) {
pe->appendChild(pcd);
pcd.Release();
}
pXMLDom->documentElement->appendChild(pe);
pe.Release();
}
// Create an element to hold three empty subelements.
pe=pXMLDom->createElement("node3");
if (pe != NULL)
{
// Add newline +tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
MSXML2::IXMLDOMDocumentFragmentPtr pdf;
pdf = pXMLDom->createDocumentFragment();
pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf->appendChild(pXMLDom->createElement("subNode1"));
pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf->appendChild(pXMLDom->createElement("subNode2"));
pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf->appendChild(pXMLDom->createElement("subNode3"));
pdf->appendChild(pXMLDom->createTextNode("\n\t"));
pe->appendChild(pdf);
pdf.Release();
pXMLDom->documentElement->appendChild(pe);
pe.Release();
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n"));
}
printf("Dynamically created DOM:\n%s\n",
(LPCSTR)pXMLDom->xml);
hr = pXMLDom->save("dynaDom.xml");
if (FAILED(hr))
{
printf("Failed to save DOM to dynaDom.xml\n");
}
else
{
printf("DOM saved to dynamDom.xml\n");
}
if (pXMLDom) pXMLDom.Release();
CoUninitialize(); getchar();
return 0;
}