解析XML文件
来源:互联网 发布:上海众阮科技骗局 知乎 编辑:程序博客网 时间:2024/05/20 18:45
使用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();
}
{
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
- XML----SAX解析XML文件
- XML---DOM4J解析XML文件
- XML DOM解析XML文件
- XML SAX解析xml文件
- XML jDOM解析XML文件
- XML DOM4J解析XML文件
- 解析XML文件___SAX解析
- java 解析 xml文件
- XML文件解析
- XML文件解析
- JstL解析XML文件
- xml文件解析办法
- DOM解析XML文件
- XML文件解析心得
- xml文件解析-SAX
- xml文件解析-DOM
- xml文件解析-JDOM
- xml文件解析-DOM4J
- 教你如何拒绝木马读取你的硬盘
- 列集散集代码
- 配置文件
- CEGUI将支持内部渲染网页
- ATL智能类型
- 解析XML文件
- ATL字符串
- LINUX学习之路---入门篇---如何在VM中与主机共享上网
- 外文翻译_Chinese Word Segmentation at Peking University
- 从脚本如何访问方法 / 属性是容器
- makefile模板
- 策划
- 虚拟机里的文件共享
- Hibernate缓存管理