写复杂XML有关问题。 !

写复杂XML问题。 !!!!
<?xml version="1.0" encoding="UTF-8"?>

<Licence_Service>
  <Version_1>
  <Version>1.0.0</Version>
  </Version_1>
  <SeriesNo_1>
  <SeriesNo>TH123456</SeriesNo>
  </SeriesNo_1>
  <Licence_Commands>
  <after_server_bootup index="1">
  <interval>N/A</interval>
  </after_server_bootup>
  </Licence_Commands>
</Licence_Service>

要用程序把上面的内容写到XML文件里



 

------解决方案--------------------
不知道你到底有什么问题?用文本方式打开文件,然后写入这些东西。
------解决方案--------------------
appendChild一层层建下去,你这个不复杂的。
------解决方案--------------------
嫌麻烦的话,就去下载个CMarkUP用用
------解决方案--------------------
C/C++ code

// XmlEdit.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#import "msxml6.dll" rename_namespace("msxml")

msxml::IXMLDOMDocumentPtr    pXmlDoc;
msxml::IXMLDOMElementPtr    pRootElem;
msxml::IXMLDOMElementPtr    pCurElem;

BOOL    CreateXmlFile(LPCTSTR strXmlFileName);
BOOL    XmlEdit(LPCTSTR strXmlFileName);
BOOL    XmlSave(LPCTSTR strXmlFileName);

int main(int argc, char *argv[])
{
    FILE *fp;
    fopen_s(&fp, _T(".\\test.xml"), "w");
    fclose(fp);
    XmlEdit(_T(".\\test.xml"));
    XmlSave(_T(".\\test.xml"));
    system("pause");
    return 0;
}

BOOL CreateXmlFile(LPCTSTR strXmlFileName)
{
    VARIANT    vt;
    BOOL    bRetVal        = TRUE;
    HRESULT    hr            = CoInitializeEx(NULL, 0);

    try
    {
        hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, 
            IID_IXMLDOMDocument, (LPVOID*)&pXmlDoc);

        if (FAILED(hr))
        {
            _com_issue_error(hr);
        }
        
        vt.vt = VT_BSTR;
        
        vt.bstrVal = SysAllocString(_bstr_t(strXmlFileName));

        SysFreeString(_bstr_t(strXmlFileName));
        
        hr = pXmlDoc->load(vt);

        if (FAILED(hr))
        {
            _com_issue_error(hr);
        }
    }
    catch (_com_error& ex)
    {
        bRetVal = FALSE;
        printf("COM error occurred\n");
    }
    return bRetVal;
}

BOOL XmlEdit(LPCTSTR strXmlFileName)
{
    BOOL bRetVal = TRUE;
    msxml::IXMLDOMElementPtr elem;

    try
    {
        if (CreateXmlFile(strXmlFileName))
        {
            while (pXmlDoc->hasChildNodes() == (VARIANT_BOOL)-1)    
            {
                pXmlDoc->removeChild(pXmlDoc->firstChild);
            }
            
            pXmlDoc->appendChild(pXmlDoc->createProcessingInstruction(_T("xml"), _T("version='1.0' encoding='UTF-8'")));
            pRootElem    = pXmlDoc->createElement(_T("License_Service"));
            pCurElem    = pRootElem;
            pXmlDoc->appendChild(pCurElem);

            elem = pXmlDoc->createElement(_T("Version_1"));
            pCurElem->appendChild(elem);
            pCurElem = elem;

            elem = pXmlDoc->createElement(_T("Version"));
            elem->Puttext(_T("1.0.0"));
            pCurElem->appendChild(elem);

            pCurElem = pCurElem->parentNode;

            elem = pXmlDoc->createElement(_T("SeriesNo_1"));
            pCurElem->appendChild(elem);
            pCurElem = elem;

            elem = pXmlDoc->createElement(_T("SeriesNo"));
            elem->Puttext(_T("TH123456"));
            pCurElem->appendChild(elem);

            pCurElem = pCurElem->parentNode;

            elem = pXmlDoc->createElement(_T("License_Command"));
            pCurElem->appendChild(elem);
            pCurElem = elem;

            elem = pXmlDoc->createElement(_T("after_server_bootup"));
            elem->setAttribute(_T("index"), 1);
            pCurElem->appendChild(elem);
            pCurElem = elem;

            elem = pXmlDoc->createElement(_T("interval"));
            elem->Puttext(_T("N/A"));
            pCurElem->appendChild(elem);

            pCurElem = pRootElem;
        }
        else
        {
            bRetVal = FALSE;
        }
    }
    catch (_com_error& ex)
    {
        bRetVal = FALSE;
        printf("COM error occurred\n");
    }

    return bRetVal;
}

BOOL XmlSave(LPCTSTR strXmlFileName)
{
    BOOL    bRetVal        = FALSE;
    HRESULT    hr            = CoInitializeEx(NULL, 0);

    try
    {
        hr = pXmlDoc->save(strXmlFileName);
        if (SUCCEEDED(hr))
        {
            bRetVal = TRUE;
        }
        else
        {
            _com_issue_error(hr);
        }
    }
    catch (_com_error& ex)
    {
        printf("COM error occurred\n");
    }
    return bRetVal;
}