用微软的 DOM,
MSXML4 //引入msxml4.dll #import "C:/WINNT.0/system32/msxml4.dll" //创建XMLDOMDocument指针 MSXML2::IXMLDOMDocumentPtr pXMLDoc; // 初始化COM接口 ::CoInitialize(NULL); // 通过智能指针创建一个解析器的实例 HRESULT hr; hr =pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); //加载文件 pXMLDoc->load("f://he.xml"); //在树中查找名为City的节点,"//"表示在任意一层查找 MSXML2::IXMLDOMElementPtr childNode ; childNode = (MSXML2::IXMLDOMElementPtr)(pXMLDoc->selectSingleNode("//AUTHOR")); //得到节点类型 MSXML2::DOMNodeType nodeType; childNode->get_nodeType(&nodeType); //节点名称 BSTR var; CString name; childNode->get_nodeName(&var); name = (char*)(_bstr_t)var; //节点值 VARIANT varVal; childNode->get_nodeTypedValue(&varVal); CString strValue = (char*)(_bstr_t)varVal; 读属性: //节点属性,放在链表中 MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL; MSXML2::IXMLDOMNodePtr pAttrItem; childNode = (MSXML2::IXMLDOMElementPtr)(pXMLDoc->selectSingleNode("//NUM")); childNode->get_attributes(&pAttrs); long nCount ; pAttrs->get_length(&nCount); for(int i = 0 ; i < nCount ; i++) { pAttrs->get_item(i,&pAttrItem); //我们可以通过函数get_nodeName,get_nodeTypedValue得到属性名和属性值 //也可以直接得到 CString strAttrName = (char*)(_bstr_t)pAttrItem->nodeName; CString strAttrValue = (char*)(_bstr_t)pAttrItem->nodeTypedValue; }
另外
可以用MSXML DOM
创建一个文档对象的过程。
HRESULT hr; IXMLDomDocument* pXMLDoc; IXMLDOMNode* pXDN; Hr=CoInitialize(NULL); //COM的初始化 hr=CoCreateInstance(CLSID_DOM Document,NULL,CLSCTX_INPPROC_SERVER, IID_IXMLDOMDocument,(void**) &pXMLDoc); hr=pXMLDoc->QueryInterface (IID_IXMLDOMNode,(void**)&pXDN);
使用文档中的createElement方法来创建一个节点装载和保存XML文件。通过load或者是loadXML方法可以从一个指定的URL来装载一个XML文档Save方法是用来把文档保存到一个指定的位置,用getElementsByTagName获得制定节点数据