松鼠的博客

导航

统计

解析XML文件

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

posted on   Xproer-松鼠  阅读(418)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示