XML DOM 的執念 (MSXML)

因為上面說,我們開發的東西不能老是都不能存檔,所以就叫我來想辦法。

因為個人執念的問題,所以就挑上 XML 啦,如果不用 XML 的話一定會快很多的。

wxSIPUA XML
以下是現在的 code,因為才剛看一天,所以錯誤很多,請大家不吝指教啦。

有興趣看程式碼,請見

#define XMLFILE	_T("test.xml")

MSXML2::IXMLDOMDocument2Ptr xmlDoc;

int CreateXML ()
{
  MSXML2::IXMLDOMProcessingInstructionPtr xmlDecl;
  MSXML2::IXMLDOMElementPtr xmlRoot;
  MSXML2::IXMLDOMTextPtr xmlText;
  MSXML2::IXMLDOMElementPtr xmlElement;

  xmlDecl = xmlDoc->createProcessingInstruction (_T("xml"),
_T("version='1.0'")));
  xmlDoc->appendChild(xmlDecl);

  xmlRoot = xmlDoc->createElement(_T("wxSIPUA"));
  xmlDoc->appendChild(xmlRoot);

  xmlElement = xmlDoc->createElement(_T("Username"));
  xmlText= xmlDoc->createTextNode(_T("Hubert"));
  xmlRoot->appendChild(xmlElement);
  xmlRoot->lastChild->appendChild(xmlText);

  xmlDoc->save (XMLFILE);

  xmlDecl.Release();
  xmlRoot.Release();
  xmlText.Release();

  return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
  CoInitialize(NULL);
  xmlDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
		
  if (xmlDoc->load(XMLFILE) == VARIANT_FALSE) {
    CreateXML ();
  }

  xmlDoc.Release();

  CoUninitialize();

  return 0;
}

因為版面的關係,並不是非常完整,但是也足夠具有代表意義了。

Leave a Reply

Your email address will not be published. Required fields are marked *