一、首先在程序适当的地方加入 #include <atlbase.h>#import "msxml3.dll"using namespace MSXML2; 二、装载XML文档 CoInitialize(NULL); // 初始化COM,初始化当前线程使用什么样的套间//CComPtr<MSXML::IXMLDOMDocument> //通过智能指针创建解析器实例CComPtr<IXMLDOMDocument> spXMLDOM; // DOM---文档对象模型spXMLDOM.CoCreateInstance(_uuidof(DOMDocument));// DOMDocument对象暴露了下面几个属性,允许用户在运行的时候改变解析器的行为spXMLDOM->put_async(VARIANT_FALSE); spXMLDOM->put_validateOnParse(VARIANT_FALSE);spXMLDOM->put_resolveExternals(VARIANT_FALSE);spXMLDOM->put_preserveWhiteSpace(VARIANT_TRUE);spXMLDOM->load(xxxpath);// 一些定义CComPtr<IXMLDOMNodeList> spNODES = NULL;CComPtr<IXMLDOMNodeList> spCHILDS = NULL;CComPtr<IXMLDOMNode> spNode = NULL;CComPtr<IXMLDOMNode> spChildNode = NULL; 三、遍历某类节点 _bstr_t bstrNodeName = "xxxx";spNODES = spXMLDOM->getElementsByTagName(bstrNodeName); // 得到这类节点的集合spNODES->reset(); // ??有必要??// 方法一long n = spNODES->Getlength();for(long i=0; i<n; i++) ...{ spNode = spNODES->nextNode(); // 一些处理,例如 CString aa = spNode->Gettext();}// 方法二for (long j=0; j<spNODES->length; j++) ...{ spNode = spNODES->Getitem(j); // 一些处理,例如 CString aaa = spNode->text.copy();} 四、创建、插入子节点 // 创建新节点CComPtr<IXMLDOMNode> spNewNode;spNewNode = spXMLDOM->createNode(CComVariant(NODE_ELEMENT),_bstr_t("newnode"),_bstr_t("xxx"));CComQIPtr<IXMLDOMElement> spNewElement;spNewElement = spNewNode; // 如果要向新创建的节点添加属性,就必须通过其作为“元素”的一面来访问它spNewElement->setAttribute(_bstr_t("mm"), CComVariant("yy")); //设置属性spNewNode->Puttext(_bstr_t("hello"));// 插入新节点spNode = spXMLDOM->selectSingleNode("dad/paragraph"); // 要写父节点的全路径!spNode->appendChild(spNewNode);// 保存spXMLDOM->save("C:/xxx.xml"); 五、读取子节点 // 类似的CComPtr<IXMLDOMNodeList> spCHILDS = spNode->GetchildNodes();// 即可