#define CHK_HR(stmt) do { hr=(stmt); if (FAILED(hr)) goto CleanUp; } while(0)
MSXML2::IXMLDOMDocumentPtr pXMLDom = NULL;
MSXML2::IXMLDOMNodePtr newNode = NULL;
MSXML2::IXMLDOMDocumentPtr pXMLDom = NULL;
MSXML2::IXMLDOMNodePtr newNode = NULL;
MSXML2::IXMLDOMElementPtr rootElem = NULL;
HRESULT hr= pXMLDom.CreateInstance(__uuidof(MSXML2::DOMDocument60), NULL, CLSCTX_INPROC_SERVER);
if (FAILED(hr))
{
printf("Failed to instantiate an XML DOM.\n");
return;
}
try
{
pXMLDom->async = VARIANT_FALSE;
pXMLDom->validateOnParse = VARIANT_FALSE;
pXMLDom->resolveExternals = VARIANT_FALSE;
if(pXMLDom->loadXML(L" <Records></Records> ") == VARIANT_TRUE)
{
printf("XML DOM loaded from app:\n%s\n", (LPCSTR)pXMLDom->xml);
rootElem = pXMLDom->GetdocumentElement();
MSXML2::IXMLDOMProcessingInstructionPtr pXMLProcessingNode =
pXMLDom->createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
_variant_t vtObject;
vtObject.vt = VT_DISPATCH;
vtObject.ppdispVal = NULL;
vtObject = (IDispatch *)rootElem;
pXMLDom->insertBefore(pXMLProcessingNode,vtObject);
MSXML2::IXMLDOMElementPtr pXMLRecord = pXMLDom->createElement(_T("Record"));
pXMLRecord = rootElem->appendChild(pXMLRecord);
MSXML2::IXMLDOMElementPtr pXMLName = pXMLDom->createElement(_T("Name"));
pXMLName ->Puttext(_T("김바보"));
pXMLName = pXMLRecord->appendChild(pXMLName);
MSXML2::IXMLDOMElementPtr pXMLAge = pXMLDom->createElement(_T("Age"));
pXMLAge ->Puttext(_T("30"));
pXMLAge = pXMLItem->appendChild(pXMLAge);
pXMLRecord = pXMLDom->createElement(_T("Record"));
pXMLRecord = rootElem->appendChild(pXMLRecord);
pXMLName = pXMLDom->createElement(_T("Name"));
pXMLName ->Puttext(_T("김다희"));
pXMLName = pXMLRecord->appendChild(pXMLName);
pXMLAge = pXMLDom->createElement(_T("Age"));
pXMLAge ->Puttext(_T("27"));
pXMLAge = pXMLItem->appendChild(pXMLAge);
pXMLRecord = pXMLDom->createElement(_T("Record"));
pXMLRecord = rootElem->appendChild(pXMLRecord);
pXMLName = pXMLDom->createElement(_T("Name"));
pXMLName ->Puttext(_T("이민정"));
pXMLName = pXMLRecord->appendChild(pXMLName);
pXMLAge = pXMLDom->createElement(_T("Age"));
pXMLAge ->Puttext(_T("31"));
pXMLAge = pXMLItem->appendChild(pXMLAge);
CHK_HR(pXMLDom->save(L"myData.xml"));
printf("XML DOM saved to myData.xml.\n");
}
else
{
printf("Failed to load DOM from xml string. %s\n", (LPCSTR)pXMLDom->parseError->Getreason());
}
}
catch (_com_error errorObject)
{
//LoadXML or Save에 대한 에러 처리
printf("Exception thrown, HRESULT: 0x%08x", errorObject.Error());
}
CleanUp:
return;
<?xml version="1.0"?>
<Records><?xml version="1.0"?>
<Record>
<Name>김바보</Name>
<Age>30</Age>
</Record>
<Record>
<Name>김다희</Name>
<Age>27</Age>
</Record>
<Record>
<Name>이민정</Name>
<Age>31</Age>
</Record>
</Records>