解析XML文件

    技术2026-06-14  14

    使用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

    最新回复(0)