精华内容
下载资源
问答
  • vc 读取XML文件

    2013-11-12 12:52:21
    vc++程序,读取xml文件的所有节点内容,并显示在列表框中。
  • VC 读取XML文件

    千次阅读 2010-02-01 18:06:00
    xml 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:10
    vc++读取XML文件数据,同时包含一款皮肤和声音播放功能。
  • VC读取XML中的数据信息,分属性和每个节点元素分别读取。
  • 在MFC中读取xml配置文件时,代码中“注释1”处的返回值一直为-1。不知道是什么原因,请大家帮忙解决下这个问题。请大家针对这个问题帮助我,建议我使用别的库函数(比如:Boost的property_ptree)来操作xml文件的大牛...
  • //函数体 代码//参数说明://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文件的过程
  • vc读取xml内容

    2013-03-17 19:11:29
    采用vc的MSXML组件从xml文件读取数据
  • VC 读取及操作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上的代码:

     

    1. //readxml.cpp
    2. #include <windows.h>
    3. #include <msxml.h>
    4. #include <iostream>
    5. #import "msxml.dll" rename_namespace("xml")
    6. using namespace std ;
    7. int main()  
    8. {  
    9.     CoInitialize(NULL) ;  
    10.     xml::IXMLDOMDocumentPtr pDoc ;
    11.     xml::IXMLDOMElementPtr  pElem ;
    12.     xml::IXMLDOMNodePtr     pNode ;
    13.     xml::IXMLDOMNodeListPtr pNodeList ;
    14.     HRESULT hr = pDoc.CreateInstance(__uuidof(xml::DOMDocument)) ; //创建文档对象
    15.     if(!SUCCEEDED(hr))
    16.     {
    17.         cout<<"无法创建DM对象!"<<endl ;
    18.         return 0 ;
    19.     }
    20.     VARIANT_BOOL bFlag;
    21.     bFlag = pDoc->load(L"BitComet.xml") ; //load xml文件
    22.     if(bFlag == S_FALSE)
    23.     {
    24.         cout<<"打开BitComet.xml出错!"<<endl ;
    25.         return 0 ;
    26.     }
    27.     hr = pDoc->get_documentElement(&pElem) ; //获取根结点
    28.     if(pElem == NULL)
    29.     {
    30.         cout<<"获取根结点失败!"<<endl ;
    31.         return 0 ;
    32.     }
    33.     BSTR strTagName = NULL;
    34.     hr = pElem->get_tagName(&strTagName) ;
    35.     cout<<"------TagName------"<<endl ;
    36.     wcout <<strTagName<<endl ;
    37.     SysFreeString(strTagName) ;
    38.     hr = pElem->get_childNodes(&pNodeList) ; //获取子结点列表
    39.     long lCount;
    40.     hr = pNodeList->get_length(&lCount) ;  
    41.     for(long i=0; i<lCount; ++i)  
    42.     {  
    43.         xml::DOMNodeType NodeType ;
    44.         xml::IXMLDOMNodeListPtr pChildNodeList ;
    45.         hr = pNodeList->get_item(i, &pNode) ; //获取结点
    46.         hr = pNode->get_nodeType(&NodeType) ; //获取结点信息的类型      
    47.         if(xml::NODE_ELEMENT == NodeType)  
    48.         {
    49.             hr = pNode->get_childNodes(&pChildNodeList) ;
    50.             long childLen ;
    51.             pChildNodeList->get_length(&childLen) ;
    52.             //设置宽字符区域(类似于国域)chs代表简体中文..可以在msdn上查询
    53.             wcout.imbue(locale("chs")) ; 
    54.             cout << "------NodeList------" << endl ;
    55.             for (int j=0; j<childLen; ++j)
    56.             {
    57.                 xml::IXMLDOMNodePtr pChildNode ;
    58.                 BSTR strValue ;
    59.                 hr = pChildNodeList->get_item(j, &pChildNode) ;
    60.                 hr = pChildNode->get_nodeName(&strValue) ; //获取结点名字
    61.                 wcout<<strValue<<endl ;
    62.                 SysFreeString(strValue) ;
    63.                 hr = pChildNode->get_text(&strValue) ; //获取结点的值
    64.                 wcout <<strValue<<endl<<endl ;
    65.                 SysFreeString(strValue) ;
    66.                 pChildNode.Release() ;
    67.             }
    68.         }
    69.         pNode.Release() ;
    70.         pChildNodeList.Release() ;  
    71.     }
    72.     pNodeList.Release() ;
    73.     pElem.Release() ;
    74.     pDoc.Release() ; 
    75.     CoUninitialize() ;
    76.     return 0 ;
    77. }

    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
    8497

    GlobalMaxUploadRate
    3072

    LastAdCacheClearDate
    13104

    LastTrackerKey
    16547

    TotalUpload
    303008

    TotalDownload
    1180107

    LastExitTime
    1132203124

    展开全文
  • VC读取XML简单例子

    2009-09-01 23:58:00
    VC读取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:/电子书

     


    ListenPort

     

    8497

     


    GlobalMaxUploadRate

     

    3072

     


    LastAdCacheClearDate

     

    13104

     


    LastTrackerKey

     

    16547

     


    TotalUpload

     

    303008

     


    TotalDownload

     

    1180107

     


    LastExitTime

     

    1132203124

     


    这是一个最简单的demo,下次软件的配置信息,可以考虑用XML

     

    展开全文
  • 有如下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:05
    4、读取XML文件 void CTestDlg1023Dlg::OnBnClickedBpharsexml() { MSXML2::IXMLDOMDocumentPtr m_spDoc; HRESULT hr = m_spDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); //char *pPath="E:\\...
  • 一,建立一个基于对话框的程序,工程名为xml; 二, 初始化OLE. BOOL CXmlApp::InitInstance() { AfxOleInit(); ……. } 三, 在对话框中增加一个按钮,ID为IDC_CREATE,我们在这个按钮的响
  • 一,建立一个基于对话框的程序,工程名为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:09
    XML最近被吹的神乎其神,很多数据的交换,包括很多中间件系统,WebService,软件的配置文件,都是在用XML这个技术,的确是个好东西,下面写了个读取XML的代码片段,用的是MSXML的一些接口。读的是BT软件的配置文件,...
  • VC操作XML文件

    2011-10-18 15:52:18
    通过VC编程,打开、读取、写操作XML文件
  • VC读写XML文件

    2012-01-03 16:04:51
    VC读写xml的教程,如果您的程序需要从配置文件读取设置,那么这份文档可供参考
  • VC++创建与读取XML文件

    2014-10-23 17:59:01
    VC创建与读取XML文件demo Win7+VS2010实现,简单易懂,读取内容在程序启动后的“输出”面板显示
  • 如何在VC环境下编写程序读取XML文件?清提供源代码.谢谢. #import named_guids //导入动态库,装了IE5就有using namespace MSXML2; //引用命名空间,一般可以把命名空间理解成类和接口的集合,呵呵,对不对我也不...
  • VC 结合XML文件备份远程数据库,主程序分为客户端和服务端,实现的原理及思路:采用VC6.0生成两个工程文件:DBClent(客户端及接收方)和DBServer(服务端及发送方)。其中DBClient负责接收XML库格式文件并生成数据库,...

空空如也

空空如也

1 2 3 4 5 6
收藏数 116
精华内容 46
关键字:

vc读取xml文件