用VC++2005读XML文件的小例子
1。写一个xml文件
<?xml version="1.0" encoding="utf-8" ?>
- <root>
- <user id="101">
<name>abc</name>
<password>abc</password>
</user>
- <user id="102">
<name>ccc</name>
<password>ccc</password>
</user>
</root>
2。新建一个vc++2005工程 可以是对话框工程 因为只是举例说明
(1)在对话框的.H文件添加
#import "msxml3.dll"
using namespace MSXML2;
(2)在初始化函数里添加
try
{
CoInitialize(NULL);//初始化COM组件
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)) ;//创建一个COM进程
if(!SUCCEEDED(hr))
{
AfxMessageBox(_T("FAILSE"),MB_OK,NULL);
}
pDoc->load("d:\\user.xml");//xml文件的地址 我放在D盘下了 也可以写成相对地址
MSXML2::IXMLDOMNodeListPtr pNodeList=NULL;//定义节点列表
pNodeList=pDoc->selectNodes("root/user");//选择节点
MSXML2::IXMLDOMNodePtr pSubNode;
CString strTemp;
for(int i=0;i<(pNodeList->Getlength());i++)//判断有几个节点
{
pSubNode=pNodeList->nextNode()->selectSingleNode("name");
_bstr_t strRequestType=pSubNode->Gettext();
strTemp=strRequestType.operator char*();
AfxMessageBox(strTemp,MB_OK,NULL);
}
}
catch (...)
{
AfxMessageBox(_T("异常"));
}
相关文档:
首先看下下面这段:
int main()
{
char *name = "fengkewei";
char name1[] = "fengkewei";
char *name2 = "fengkewei";
char *name3 = "woaifengkewei";
int i = 10;
int j = 10;
int k = 11;
return 0;
}
若您觉得它们应该都保存在内存中的一块地方,那请往下看。。。。
下面是编译器为各个变量分配的内存地 ......
用此法前确保你的C源代码是无错的~~
解决办法:
C:
在主函数后加getch()或ch=getch(); (让程序等待你按下任意键,再继续执行下面的语句)
C++:
1.包含头文件时: #include <stdlib.h>/*header file,因为在stdlib.h头文件中定义了system()函数*/
2.在最后一句加上:system("PAUSE ......
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(path);
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
//指定一个节点
XmlNode root=xml.SelectSingleNode("/root");
//获取节点下所有直接子节点
XmlNodeList childlist=root ......
所有 XML 文档中的文本均会被解析器解析。
只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。
Parsed Data
XML 解析器通常会解析 XML 文档中所有的文本。
当某个 XML 元素被解析时,其标签之间的文本也会被解析:
<message>此文本也会被解析</message>
解析器之所以这么做是因为 XML 元素可包 ......