vc 读取 XML文件的一个简单实例,以备查用
来源:互联网 发布:弱覆盖优化思想 编辑:程序博客网 时间:2024/06/01 09:26
//函数体 代码
//参数说明:
//file:XML文件名指针
//root:XML文档根结点
//child_name:XML文档子结点
long GetXmlContent(const char* file,CString root,
CString child_name)
{
CSockChn xml;
HRESULT hrr = CoInitialize(NULL);
if (FAILED(hrr))
{
AfxMessageBox("ERROR - Could not initialize COM library");
return -1;
}
MSXML2::IXMLDOMDocumentPtr doc;
HRESULT hr;
hr=doc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(hr))
{
AfxMessageBox("ERROR - Create Object Instance Failed!");
return -1;
}
VARIANT_BOOL bl=doc->load(file);
if(bl==S_FALSE)
{
AfxMessageBox("ERROR - Open XML File Failed!");
return -1;
}
MSXML2::IXMLDOMNodePtr node;
CString nn;
nn.Format("//%s",root);
node=doc->selectSingleNode((LPCTSTR)nn);
MSXML2::DOMNodeType ntype;
node->get_nodeType(&ntype);//节点类型
CString name;
name=(char*)node->GetnodeName();//节点名称
MSXML2::IXMLDOMNamedNodeMapPtr pList=NULL;
node->get_attributes(&pList);
long count;
pList->get_length(&count);
for(int i=0;i<count;i++)//获取属性
{
MSXML2::IXMLDOMNodePtr pNode;
pList->get_item(i,&pNode);
_variant_t v;
CString n=(char*)pNode->GetnodeName();
CString va=(char*)(_bstr_t)pNode->GetnodeTypedValue();
}
////获取子节点
MSXML2::IXMLDOMNodeListPtr nList;
CString mm;
mm.Format("//%s",child_name);
nList=node->selectNodes((LPCTSTR)mm);
long cc;
nList->get_length(&cc);
for(int i=0;i<cc;i++)
{
CString strid="",strTitle="",strImgid="";
MSXML2::IXMLDOMNodePtr nn=nList->item[i];
CString n=(char*)nn->GetnodeName();
CString va=(char*)(_bstr_t)nn->GetnodeTypedValue();
MSXML2::IXMLDOMNamedNodeMapPtr aList=NULL;
nn->get_attributes(&aList);
long num;
CString attrName,attrValue;
aList->get_length(&num);
for(int m=0;m<num;m++)
{
MSXML2::IXMLDOMNodePtr pNode;
aList->get_item(m,&pNode);
attrName=(char*)pNode->GetnodeName();
attrValue=(char*)(_bstr_t)pNode->GetnodeTypedValue();
if(attrName=="id") strid=attrValue;
else if(attrName=="title") strTitle=attrValue;
else if(attrName=="imgid") strImgid=attrValue;
else ;
}
xml.ipaddress=va;
xml.name=strid;
xml.title=strTitle;
xml.imgid=atoi(strImgid);
sList.AddTail(xml);
}
CoUninitialize();
return cc;
/////end
}
//调用方式
GetXmlContent("he.xml","Network","Computer");
//XML文档实例
<?xml version="1.0" encoding="GB2312"?>
<Network id="zt">
<Computer id="xm" title="厦门地区" imgid="2000">10.206.110.54</Computer>
<Computer id="sx" title="山西地区" imgid="2001">10.206.110.20</Computer>
<Computer id="zz" title="福建直通" imgid="2002">10.236.5.224</Computer>
</Network>
- vc 读取 XML文件的一个简单实例,以备查用
- [JAVA] 一个用java读取XML文件的简单方法
- 用TinyXml2读取XML文件的一个简单Demo
- JAVA--通过DOM4J的方式读取xml文件简单实例
- 简单的文件读取实例
- 读取简单的xml文件
- 简单的读取xml文件
- VC 读取XML文件
- 简单的使用自动化技术实现用WORD读取一个XML文件的过程~
- dom4j读取一个xml文件,以原格式输出
- ASP实例:读取xml文件的程序
- VC读取XML简单例子
- VC读取XML简单例子
- 一个VC++读取csv文件的函数
- java--通过JDBC方式读取xml文件简单实例
- java--通过DOM方式对xml文件进行读取的简单实例
- C#2005 一个简单的扫描文件读取XML文件类
- 用Ajax读取xml文件的简单例子
- vs2005 网站发布不成功
- 2010年年度总结(二)-灰常给力
- 加入域脚本
- 这个冬天,他们实现了梦想中的华丽转身…
- java.util.Collections.copy()方法注意点
- vc 读取 XML文件的一个简单实例,以备查用
- 聚合分析和分组
- 监控远程桌面连接
- C#学习之修饰符
- Oracle 索引管理
- hyperic HQ安装配置
- 2010年总结(三)
- ORA-12528: TNS: 监听程序所有适用的例程都不允许建立
- opencv2.2中利用GPU加速行人检测的算法代码