写复杂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用用
------解决方案--------------------
<?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; }