使用MSXML SDK步骤:(1)Tools->Options->Directories 添加 msxml2.lib 目录 和 include 文件目录(2)Project->Settings->Link->Object/library modules 添加 msxml2.lib(3)在引用类的头文件中#include "msxml2.h"
注意:(1)XML文件格式应为UNICODE,MSXML只支持UNICODE
void CTestDlg::InitXml() { HRESULT hr; IXMLDOMDocument * doc = NULL; //IXMLDOMElement* root = NULL; IXMLDOMElement *root = NULL; VARIANT_BOOL vb = false; IXMLDOMNodeList* childList = NULL; long len; //CComBSTR file(L"E://vc//test//Debug//test.xml"); CString str(L"E://vc//test//Debug//test.xml"); BSTR bstr = str.AllocSysString(); hr = CoInitialize(NULL); hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,IID_IXMLDOMDocument, (void**)&doc); hr = doc->load(CComVariant(L"E://vc//test//Debug//test.xml"),&vb); if (FAILED(hr)) { AfxMessageBox("加载XML失败"); return; } hr = doc->get_documentElement(&root);//获取根 if (FAILED(hr)) { AfxMessageBox("获取根节点失败"); return; } root->get_childNodes(&childList); childList->get_length(&len); for (int i = 0 ; i < len ; ++i) { IXMLDOMNode *item; IXMLDOMNode *nameAtr; IXMLDOMNamedNodeMap *atr; wchar_t *name = new wchar_t[255]; memset(name,0,sizeof(name)); childList->get_item(i,&item); item->get_attributes(&atr);//获取属性 atr->getNamedItem(L"name",&nameAtr);//获取名称值 nameAtr->get_text(&name);//获取name值 CString strName(name); this->m_List.InsertItem(i,strName); } CoUninitialize();}
相关参考:http://www.vcer.net/2248.html
MSXML Parser 3.0 SDK下载:http://www.microsoft.com/downloads/details.aspx?FamilyID=87925008-ec5a-4ff2-a7ef-549ab0394eda&displaylang=en
