-
vc 读取XML文件
2013-11-12 12:52:21vc++程序,读取xml文件的所有节点内容,并显示在列表框中。 -
VC 读取XML文件
2010-02-01 18:06:00xml version="1.0" ?>PMP> Setup> Power> PowerOff value="0" /> LCDOff value="0" /> Power> Battery> LCDOff value="0" /> PowerOff value<?xml version="1.0" ?>
<PMP>
<Setup>
<Power>
<PowerOff value="0" />
<LCDOff value="0" />
</Power>
<Battery>
<LCDOff value="0" />
<PowerOff value="0" />
</Battery>
<MosaicSize>
<VideoMosaicSize value="7" />
<PhotoMosaicSize value="4" />
</MosaicSize>
<ScreenSaver>
<ScreenSaver value="0" />
<SaverChoice value="1" />
</ScreenSaver>
</Setup>
</PMP>有以上的XML文件来进行读取里面的value值。
首先:
#import "msxml3.dll"
using namespace MSXML2;::CoInitialize(NULL); 初始化
下面就是读取指定结点的值.
IXMLDOMDocument2Ptr xml;
xml.CreateInstance(__uuidof(MSXML2::DOMDocument));
xml->load("E://boot1.xml");
MSXML2::IXMLDOMElementPtr nodeI, Elemen;
CString strRoot;
strRoot = "/PMP/Setup/MosaicSize/VideoMosaicSize";
node=xml->selectSingleNode(_bstr_t(strRoot));
strRoot = "/PMP/Setup/MosaicSize/PhotoMosaicSize";
Elemen=xml->selectSingleNode(_bstr_t(strRoot));
if(node!=NULL && Elemen!=NULL)
{_variant_t vt = node->getAttribute("value");
CString strValue = vt.bstrVal;
int nValue = atoi(strValue);vt = Elemen->getAttribute("value");
strValue = vt.bstrVal;
int Value = atoi(strValue);
}运行之后就可以得到想要结点的值!!
-
VC读取XML文件数据
2011-12-14 23:12:10vc++读取XML文件数据,同时包含一款皮肤和声音播放功能。 -
vc读取XML文件中的数据信息
2008-12-19 22:46:42用VC读取XML中的数据信息,分属性和每个节点元素分别读取。 -
VC 读取xml文件--load函数返-1的异常
2013-12-25 15:32:43在MFC中读取xml配置文件时,代码中“注释1”处的返回值一直为-1。不知道是什么原因,请大家帮忙解决下这个问题。请大家针对这个问题帮助我,建议我使用别的库函数(比如:Boost的property_ptree)来操作xml文件的大牛... -
vc 读取 XML文件的一个简单实例,以备查用
2010-12-31 10:53:00//函数体 代码//参数说明://file:XML文件名指针//root:XML文档根结点//child_name:XML文档子结点long GetXmlContent(const char* file,CString root, CString child_name){ CSockChn xml; HRESULT hrr = ...//函数体 代码
//参数说明:
//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文件
2011-08-24 12:22:49详细叙述了如何用vc读取xml文件的过程 -
vc读取xml内容
2013-03-17 19:11:29采用vc的MSXML组件从xml文件中读取数据 -
VC 读取及操作XML文件的例子.rar
2019-07-10 11:34:01VC 读取及操作XML文件的代码实例,比如读取XML文件中的各个节点数据,并以表格形式返回读取到的节点值,显示XML文件的内容结构,对在VC 环境下操作XML文件有些许帮助。 -
vc读取xml源码+说明
2013-04-25 20:05:34一个很好的类cmarkup类,方便的读取XML文件,添加修改都可以 -
VC 6.0中读取XML文件
2008-09-14 12:14:00搞了一天 总算在VC 6.0中可以读取XML文件, 哎呀就是麻烦啊 我的天 搞了一整天头都大了在百度上参考了 许多VC代码 但是不管我怎么调试都没成功 比如哦 ...因为自己机子上没有atlstr.h头文件,而且也不想在此控制搞了一天 总算在VC 6.0中可以读取XML文件, 哎呀就是麻烦啊 我的天 搞了一整天头都大了
在百度上参考了 许多VC代码 但是不管我怎么调试都没成功 比如哦 http://hi.baidu.com/walfer/blog/item/0a548a44a113e24c500ffe37.html 就是编译不过去(自己做了修改,因为自己机子上没有atlstr.h头文件,而且也不想在此控制台程序中使用MFC) 提示什么7788的错误(fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786) 但百度再找一番此错误 说VC 6.0编译器的BUG, 不管了 后面又在百度上找其他的例子 http://blog.csdn.net/liuxiaoyi666/archive/2007/04/02/1549720.aspx 这回这个例子改改总算可以写XML文件了 但是读取呢? 哦,参考现在这个csdn上可行代码, 改改最先的那个baidu上的代码:- //readxml.cpp
- #include <windows.h>
- #include <msxml.h>
- #include <iostream>
- #import "msxml.dll" rename_namespace("xml")
- using namespace std ;
- int main()
- {
- CoInitialize(NULL) ;
- xml::IXMLDOMDocumentPtr pDoc ;
- xml::IXMLDOMElementPtr pElem ;
- xml::IXMLDOMNodePtr pNode ;
- xml::IXMLDOMNodeListPtr pNodeList ;
- HRESULT hr = pDoc.CreateInstance(__uuidof(xml::DOMDocument)) ; //创建文档对象
- if(!SUCCEEDED(hr))
- {
- cout<<"无法创建DM对象!"<<endl ;
- return 0 ;
- }
- VARIANT_BOOL bFlag;
- bFlag = pDoc->load(L"BitComet.xml") ; //load xml文件
- if(bFlag == S_FALSE)
- {
- cout<<"打开BitComet.xml出错!"<<endl ;
- return 0 ;
- }
- hr = pDoc->get_documentElement(&pElem) ; //获取根结点
- if(pElem == NULL)
- {
- cout<<"获取根结点失败!"<<endl ;
- return 0 ;
- }
- BSTR strTagName = NULL;
- hr = pElem->get_tagName(&strTagName) ;
- cout<<"------TagName------"<<endl ;
- wcout <<strTagName<<endl ;
- SysFreeString(strTagName) ;
- hr = pElem->get_childNodes(&pNodeList) ; //获取子结点列表
- long lCount;
- hr = pNodeList->get_length(&lCount) ;
- for(long i=0; i<lCount; ++i)
- {
- xml::DOMNodeType NodeType ;
- xml::IXMLDOMNodeListPtr pChildNodeList ;
- hr = pNodeList->get_item(i, &pNode) ; //获取结点
- hr = pNode->get_nodeType(&NodeType) ; //获取结点信息的类型
- if(xml::NODE_ELEMENT == NodeType)
- {
- hr = pNode->get_childNodes(&pChildNodeList) ;
- long childLen ;
- pChildNodeList->get_length(&childLen) ;
- //设置宽字符区域(类似于国域)chs代表简体中文..可以在msdn上查询
- wcout.imbue(locale("chs")) ;
- cout << "------NodeList------" << endl ;
- for (int j=0; j<childLen; ++j)
- {
- xml::IXMLDOMNodePtr pChildNode ;
- BSTR strValue ;
- hr = pChildNodeList->get_item(j, &pChildNode) ;
- hr = pChildNode->get_nodeName(&strValue) ; //获取结点名字
- wcout<<strValue<<endl ;
- SysFreeString(strValue) ;
- hr = pChildNode->get_text(&strValue) ; //获取结点的值
- wcout <<strValue<<endl<<endl ;
- SysFreeString(strValue) ;
- pChildNode.Release() ;
- }
- }
- pNode.Release() ;
- pChildNodeList.Release() ;
- }
- pNodeList.Release() ;
- pElem.Release() ;
- pDoc.Release() ;
- CoUninitialize() ;
- return 0 ;
- }
if(pElem == NULL)
{
cout<<"获取根结点失败!"<<endl ;
return 0 ;
}刚开始没加上这个if语句的时候 老出错 以为是pElem->get_tagName(&strTagName) ; 参数strTagName
因为刚开始不知道 存储空间由系统分配 以为对strTagName写操作导致崩溃 后面又到MSDN查了查 不是这个问题
然后就加上了这个if语句。 运行程序 提示:获取根结点失败! 为什么会失败?怪事?XML文档的问题?
再看了看那个http://hi.baidu.com/walfer/blog/item/0a548a44a113e24c500ffe37.html提供的XML文档 发现“序元码”<?xml version="1.0"?> 的问题 改成<?xml version="1.0" encoding="GB2312" ?> 获取根节点成功了
但是输出又出问题了(在没加wcout.imbue(locale("chs")) ; 之前) 怎么会输出不完全?输出“E:/” 就结束了 “电子书”死活显示不出来 看来用wcout汉字不能显示 又到百度找了找 加上了wcout.imbue(locale("chs")) ; 这回总算能完整的显示了:
------TagName------
BitComet
------NodeList------
LastSaveLocation
E:/电子书ListenPort
8497GlobalMaxUploadRate
3072LastAdCacheClearDate
13104LastTrackerKey
16547TotalUpload
303008TotalDownload
1180107LastExitTime
1132203124 -
VC读取XML简单例子
2009-09-01 23:58:00VC读取XML简单例子http://blog.csdn.net/loveghb/archive/2006/01/11/575925.aspx XML最近被吹的神乎其神,很多数据的交换,包括很多中间件系统,WebService,软件的配置文件,都是在用XML这个技术,的确是个好东西...VC读取XML简单例子
http://blog.csdn.net/loveghb/archive/2006/01/11/575925.aspx
XML最近被吹的神乎其神,很多数据的交换,包括很多中间件系统,WebService,软件的配置文件,都是在用XML这个技术,的确是个好东西,我手痒,写了个读取XML的代码片段,用的是MSXML的一些接口。
我读的是BT软件的配置文件,XML内容如下:<?xml version="1.0"?>
<BitComet Author="RnySmile" Version="0.1">
<Settings>
<LastSaveLocation>E:/电子书</LastSaveLocation>
<ListenPort>8497</ListenPort>
<GlobalMaxUploadRate>3072</GlobalMaxUploadRate>
<LastAdCacheClearDate>13104</LastAdCacheClearDate>
<LastTrackerKey>16547</LastTrackerKey>
<TotalUpload>303008</TotalUpload>
<TotalDownload>1180107</TotalDownload>
<LastExitTime>1132203124</LastExitTime>
</Settings>
</BitComet>
代码如下:#include "stdafx.h"
#include <iostream>
using namespace std;
#include <msxml.h>
#include <atlstr.h>
#import "msxml.dll" raw_interfaces_only
int _tmain(int argc, _TCHAR* argv[]){
::CoInitialize(NULL);
CComPtr<MSXML::IXMLDOMDocument> spDoc;
HRESULT hr = spDoc.CoCreateInstance(__uuidof(MSXML::DOMDocument)); //创建文档对象
VARIANT_BOOL bFlag;
hr = spDoc->load(CComVariant(L"BitComet.xml"), &bFlag); //load xml文件
CComPtr<MSXML::IXMLDOMElement> spElement;
hr = spDoc->get_documentElement(&spElement); //获取根结点CComBSTR strTagName;
hr = spElement->get_tagName(&strTagName);
cout << "------TagName------" << endl;
cout << CString(strTagName) << endl;
CComPtr<MSXML::IXMLDOMNodeList> spNodeList;hr = spElement->get_childNodes(&spNodeList); //获取子结点列表
long lCount;
hr = spNodeList->get_length(&lCount);
for (long i=0; i<lCount; ++i)
{
CComVariant varNodeValue;
CComPtr<MSXML::IXMLDOMNode> spNode;
MSXML::DOMNodeType NodeType;
CComPtr<MSXML::IXMLDOMNodeList> spChildNodeList;
hr = spNodeList->get_item(i, &spNode); //获取结点hr = spNode->get_nodeType(&NodeType); //获取结点信息的类型
if (NODE_ELEMENT == NodeType)
{
hr = spNode->get_childNodes(&spChildNodeList);
long childLen;
hr = spChildNodeList->get_length(&childLen);
cout << "------NodeList------" << endl;
for (int j=0; j<childLen; ++j){
CComPtr<MSXML::IXMLDOMNode> spChildNode;
CComBSTR value;
hr = spChildNodeList->get_item(j, &spChildNode);
hr = spChildNode->get_nodeName(&value); //获取结点名字
cout << CString(value) << endl;
hr = spChildNode->get_text(&value); //获取结点的值cout << CString(value) << endl << endl;
spChildNode.Release();
}
}
spNode.Release();spChildNodeList.Release();
}
spNodeList.Release();spElement.Release();
spDoc.Release();
::CoUninitialize();
return 0;}
输出结果如下:------TagName------
BitComet
------NodeList------
LastSaveLocation
E:/电子书
ListenPort8497
GlobalMaxUploadRate3072
LastAdCacheClearDate13104
LastTrackerKey16547
TotalUpload303008
TotalDownload1180107
LastExitTime1132203124
这是一个最简单的demo,下次软件的配置信息,可以考虑用XML -
如何在VC中读取xml文件
2012-06-19 11:48:24有如下xml文件 <?xml version="1.0" encoding="gb2312"?> <Data> ...value1="name" value2="张三" />...请问如何在VC中读取该xml文件,将value1、value2、value3和value4的值读出来 -
VC——MFC读取XML文件
2012-07-10 22:31:50在MFC中利用IXMLDOMDocumentPtr类来操作XML格式的文件 首先:安装msxml.msi,下载地址 http://download.csdn.net/detail/wlq5800/4421675 然后:在stdafx.h文件中,加载DLL文件 #import 宏定义一下 #define ... -
VC创建与读取XML文件
2014-10-23 17:46:054、读取XML文件 void CTestDlg1023Dlg::OnBnClickedBpharsexml() { MSXML2::IXMLDOMDocumentPtr m_spDoc; HRESULT hr = m_spDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); //char *pPath="E:\\... -
vc6.0读取xml文件中的内容
2011-08-23 22:56:02一,建立一个基于对话框的程序,工程名为xml; 二, 初始化OLE. BOOL CXmlApp::InitInstance() { AfxOleInit(); ……. } 三, 在对话框中增加一个按钮,ID为IDC_CREATE,我们在这个按钮的响 -
关于如何使用vc6.0读取xml文件中的内容
2015-01-03 21:57:04一,建立一个基于对话框的程序,工程名为xml;...…….}三, 在对话框中增加一个按钮,ID为IDC_CREATE,我们在这个按钮的响应函数中生成一个xml文件.void CXmlDlg::OnCreate(){MSXML2::IXMLDOMDocumentPtr pDoc;M... -
如何用vc创建和读取xml文件??
2009-06-27 10:16:00如何用vc创建和读取xml文件??楼主cwcsdn(nic)2005-04-28 00:23:32 在 VC/MFC / 基础类 提问能给一个简单的例子吗??问题点数:60、回复次数:7Top1 楼edaynet(忆天)回复于 2005-04-28 05:19:36 得分 60void ... -
VC使用MSXML.dll读取XML文件
2011-07-27 16:55:09XML最近被吹的神乎其神,很多数据的交换,包括很多中间件系统,WebService,软件的配置文件,都是在用XML这个技术,的确是个好东西,下面写了个读取XML的代码片段,用的是MSXML的一些接口。读的是BT软件的配置文件,... -
VC操作XML文件
2011-10-18 15:52:18通过VC编程,打开、读取、写操作XML文件。 -
VC读写XML文件
2012-01-03 16:04:51VC读写xml的教程,如果您的程序需要从配置文件中读取设置,那么这份文档可供参考 -
VC++创建与读取XML文件
2014-10-23 17:59:01VC创建与读取XML文件demo Win7+VS2010实现,简单易懂,读取内容在程序启动后的“输出”面板显示 -
如何在VC环境下编写程序读取XML文件
2010-01-03 11:45:00如何在VC环境下编写程序读取XML文件?清提供源代码.谢谢. #import named_guids //导入动态库,装了IE5就有using namespace MSXML2; //引用命名空间,一般可以把命名空间理解成类和接口的集合,呵呵,对不对我也不... -
VC 结合XML文件备份远程数据库.rar
2019-07-10 11:43:25VC 结合XML文件备份远程数据库,主程序分为客户端和服务端,实现的原理及思路:采用VC6.0生成两个工程文件:DBClent(客户端及接收方)和DBServer(服务端及发送方)。其中DBClient负责接收XML库格式文件并生成数据库,...