// MsXmlTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "MsXmlTest.h" #include <clocale> #include "comutil.h" #import "msxml4.dll" #ifdef _DEBUG #define new DEBUG_NEW #endif // 唯一的应用程序对象 CWinApp theApp; using namespace std; void WritePerson(MSXML2::IXMLDOMDocument2Ptr pDocument, MSXML2::IXMLDOMNodePtr pParentNode, CString name, long age) { //创建一个<Person>节点 MSXML2::IXMLDOMElementPtr pPersonNode = pDocument->createElement(_T("person")); pParentNode->appendChild(pPersonNode); //写入name MSXML2::IXMLDOMElementPtr pPersonNameNode = pDocument->createElement(_T("name")); pPersonNameNode->text = _bstr_t(name); //写入age MSXML2::IXMLDOMElementPtr pPersonAgeNode = pDocument->createElement(_T("age")); pPersonAgeNode->text = _bstr_t(age); pPersonNode->appendChild(pPersonNameNode); pParentNode->appendChild(pPersonAgeNode); } void WritePersons() { MSXML2::IXMLDOMDocument2Ptr pXMLDocument; pXMLDocument.CreateInstance(__uuidof(MSXML2::DOMDocument)); MSXML2::IXMLDOMElementPtr pPersonsNode = pXMLDocument->createElement(_T("persons")); pXMLDocument->appendChild(pPersonsNode); WritePerson(pXMLDocument, pPersonsNode, _T("chain"), 25); WritePerson(pXMLDocument, pPersonsNode, _T("who"), 0); pXMLDocument->save(_T("persons.xml")); } void ReadPersons() { MSXML2::IXMLDOMDocument2Ptr pXMLDocument; pXMLDocument.CreateInstance(__uuidof(MSXML2::DOMDocument)); pXMLDocument->load(_T("persons.xml")); MSXML2::IXMLDOMElementPtr pRootNode = pXMLDocument->documentElement; //查找<person>节点. MSXML2::IXMLDOMNodeListPtr pPersonNodes = pRootNode->selectNodes(_T("person")); CString s; long size = pPersonNodes->length; for (int i = 0; i<size; i++) { MSXML2::IXMLDOMNodePtr pPersonNode = pPersonNodes->item[i]; MSXML2::IXMLDOMNodePtr pNameNode = pPersonNode->selectSingleNode(_T("name")); MSXML2::IXMLDOMNodePtr pAgeNode = pPersonNode->selectSingleNode(_T("age")); s.Format(_T("%sname: %s/tage: %s/r/n"), s, (LPCTSTR)pNameNode->text, (LPCTSTR)pAgeNode->text); } _tprintf(s); } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { setlocale(LC_ALL, "chs"); HRESULT hr; hr = ::CoInitialize(NULL); WritePersons(); ReadPersons(); ::CoUninitialize(); return 0; }