CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  HTML/XML

求助,在VC++中用什么解析xml?

楼主stevens2009(风)2004-09-04 16:42:50 在 VC/MFC / HTML/XML 提问

收到JAVA程序发过来的一串XML,  
  VC++中有什么可以解析xml的?非常感谢!!!! 问题点数:100、回复次数:15Top

1 楼banjo(3天看问题)回复于 2004-09-04 16:46:22 得分 10

msxml  
  微软的开发包,支持dom和saxTop

2 楼stevens2009(风)回复于 2004-09-04 17:16:24 得分 0

怎么用呢?有没有示例Top

3 楼flyelf(空谷清音)回复于 2004-09-04 21:16:28 得分 10

ibm   xml4cTop

4 楼__A__(無羈の心)回复于 2004-09-05 05:44:47 得分 50

//AaaaDlg.h  
  #import   <msxml.dll>   named_guids  
  using   namespace   MSXML;  
   
  class   CAaaaDlg   :   public   CDialog  
  {  
  ......  
  protected:  
  CTreeCtrl   m_TreeCtrl;  
  MSXML::IXMLDOMDocumentPtr   m_plDomDocument;  
  MSXML::IXMLDOMElementPtr   m_pDocRoot;  
  ......  
  };  
   
  //AaaaDlg.cpp  
  BOOL   CAaaaDlg::OnInitDialog()  
  {  
  ......  
  //   TODO:   在此添加额外的初始化代码  
  //Initialize   COM  
  ::CoInitialize(NULL);  
   
  HRESULT   hr   =  
  m_plDomDocument.CreateInstance(MSXML::CLSID_DOMDocument);  
  if(   FAILED(hr))  
  {  
  _com_error   er(hr);  
  AfxMessageBox(er.ErrorMessage());  
  EndDialog(1);  
  }  
  return   TRUE;     //   除非设置了控件的焦点,否则返回   TRUE  
  }  
   
  void   CAaaaDlg::OnBnClickedOk()  
  {  
  CFileDialog   fileDlg(TRUE);  
  if(IDOK   ==   fileDlg.DoModal())  
  {  
  m_TreeCtrl.DeleteAllItems();  
   
  CString   strFileName=(fileDlg.GetPathName());  
   
  //Convert   XML   file   name   string   to   somethinf  
  //COM   can   handle(bstr)  
  _bstr_t   bstrFileName;  
  bstrFileName   =   strFileName.AllocSysString();  
   
  //Call   the   IXMLDOMDocumentPtr's   load   function  
  //to   load   the   XML   document.  
  variant_t   vResult;  
  vResult   =   m_plDomDocument->load(bstrFileName);  
   
  if((   (bool)vResult   )   ==   TRUE)//success!  
  {  
  m_pDocRoot   =   m_plDomDocument->documentElement;  
  DisplayChildren(TVI_ROOT,   m_pDocRoot);  
  if(0   ==   m_TreeCtrl.GetCount())  
  {  
  m_TreeCtrl.InsertItem("Empty   document");  
  }  
  }  
  else  
  {  
  m_TreeCtrl.InsertItem("Document   FAILED   to   load!");  
  }  
  }  
  }  
   
  void   CAaaaDlg::DisplayChildren(HTREEITEM   hParent,   MSXML::IXMLDOMNodePtr   pParent)  
  {  
  //Display   the   current   node's   name  
  HTREEITEM   hItem   =   DisplayChild(hParent,   pParent);  
   
  //Simple   for   loop   to   get   all   children  
  for(MSXML::IXMLDOMNodePtr   pChild   =   pParent->firstChild;  
  NULL   !=   pChild;   pChild   =   pChild->nextSibling)  
  {  
  //For   each   child,   call   this   function   so   that   you   get  
  //its   children   as   well.  
  hItem   =   DisplayChild(hItem,   pChild);  
  DisplayChildren(hItem,   pChild);  
  }  
  }  
   
  HTREEITEM   CAaaaDlg::DisplayChild(HTREEITEM   hParent,   MSXML::IXMLDOMNodePtr   pChild)  
  {  
  //Add   the   element's   node   name   to   the   tree   view  
  //and   return   the   hItem.  
  CString   strElement(   (LPCTSTR)pChild->nodeName);  
  return   m_TreeCtrl.InsertItem(strElement,   hParent);  
  }  
  Top

5 楼__A__(無羈の心)回复于 2004-09-05 05:49:21 得分 10

XML文档对象模型(DOM)是一种功能强大、健壮的程序化接口,  
  使用该接口不仅能够通过程序上载和分析XML文件或文档,而  
  且还可以用来遍历XML数据....  
   
  可以找相关的书查一下:)Top

6 楼__A__(無羈の心)回复于 2004-09-05 05:53:28 得分 10

上面的例程就是一个遍历XML数据,并在CTreeCtrl树视图  
  控件中分层展开的例子..Top

7 楼arvid_gs(west)回复于 2004-09-06 19:15:42 得分 10

XML文档对象模型(DOM)Top

8 楼nineclock(闭关中。。。)回复于 2004-09-06 19:52:50 得分 0

如果是为上手快,从网上下几个好用的类,操作很方便,我手头,要的话给我发短信Top

9 楼Oversense(步步文)回复于 2004-09-07 13:19:46 得分 0

tinyxml_2_3_2.tar.gzTop

10 楼tabby(-_-b .. 内存泄漏)回复于 2004-09-08 18:56:19 得分 0

实例代码:  
  link   里面添加:msxml2.lib  
   
  #include   "msxml2.h"  
   
  try  
  {  
  HRESULT   hr;  
  IXMLDOMDocument*   pXMLDoc;  
  IXMLDOMNode*   pXDN;  
   
  //COM的初始化    
  hr=CoInitialize(NULL);  
           
  //得到关于IXMLDOMDocument接口的指针pXMLDOC  
  hr=CoCreateInstance(CLSID_DOMDocument,NULL,CLSCTX_INPROC_SERVER,  
    IID_IXMLDOMDocument,(void**)   &pXMLDoc);    
           
  //将XML字符串转换成UNICODE,然后加载  
  VARIANT_BOOL   bSuccess   =   false;  
  pXMLDoc->loadXML(L"<?xml   version=\"1.0\"   encoding=\"GB2312\"?><root><file><time>2003-10-13</time><content>内容</content><title>标题</title></file></root>",&bSuccess);  
   
  //得到已加载的XML字符串,并显示  
  LPWCH   tempxml;  
   
  //因为此处是输出参数[out][retval],所以不用new一段空间  
  pXMLDoc->get_xml(&tempxml);  
  MessageBoxW(NULL,tempxml,L"XML正文",MB_OK);  
   
  //取到<time>,<title>以及<content>节点,并显示结点内容  
  pXMLDoc->selectSingleNode(L"//time",(IXMLDOMNode   **)&pXDN);  
  pXDN->get_text(&tempxml);  
  MessageBoxW(NULL,tempxml,L"time值",MB_OK);  
  pXMLDoc->selectSingleNode(L"//title",(IXMLDOMNode   **)&pXDN);  
  pXDN->get_text(&tempxml);  
  MessageBoxW(NULL,tempxml,L"title值",MB_OK);  
  pXMLDoc->selectSingleNode(L"//content",(IXMLDOMNode   **)&pXDN);  
  pXDN->get_text(&tempxml);  
  MessageBoxW(NULL,tempxml,L"content值",MB_OK);  
   
  //释放分配的资源  
   
  CoUninitialize();  
  }  
  catch(...)  
  {  
  AfxMessageBox("错误!");  
  }Top

11 楼snaill(com.chinaos.snaill)回复于 2004-09-09 10:10:28 得分 0

msxml的接口很简单,特别是dom,不过你要了解一点com的调用方法Top

12 楼zhujianping_es(DavidRipple)回复于 2004-09-09 11:05:11 得分 0

I   Use   tinyXMLTop

13 楼yanz03(一)回复于 2004-09-13 09:42:42 得分 0

楼主,您好!我看你的帖子中有这样一句话“收到JAVA程序发过来的一串XML”我现在已经能解析xml文件,但是不知道怎样用java程序发过来这样的一串xml,急用,盼回,等待中......Top

14 楼shuiguan(随便走走)回复于 2004-09-17 11:44:57 得分 0

学习Top

15 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-09-17 16:18:29 得分 0

太多XML开发包都支持window.和vc没关系Top

相关问题

  • 请问在vc中用什么解析xml,我想在vc中写xml,大家帮忙指点一下!
  • 请问在vc中用什么解析xml,我想在vc中写xml,大家帮忙指点一下!
  • VC下封装的XML 解析器?
  • java解析xml用什么包?
  • xml解析器是做什么用的?
  • 如何在VC用DOM解析XML字符串
  • VC如何把XML的字符串加到解析器中
  • 请问一下VC下的XML解析需要的环境?
  • xml解析
  • xml解析

关键词

  • vc++
  • hr
  • xml
  • null
  • tempxml
  • pxdn
  • caaaadlg
  • pxmldoc
  • messageboxw
  • 解析

得分解答快速导航

  • 帖主:stevens2009
  • banjo
  • flyelf
  • __A__
  • __A__
  • __A__
  • arvid_gs

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo