CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  XML/SOAP

XML遍历和编码问题

楼主ytdmm(相忘于江湖)2005-03-14 15:39:58 在 Web 开发 / XML/SOAP 提问

有如下xml文件(片段)  
    <dblp>  
  <mastersthesis   mdate="2002-01-03"   key="ms/Brown92">  
  <author>Kurt   P.   Brown</author>    
  <title>PRPL:   A   Database   Workload   Specification   Language,   v1.3.</title>    
  <year>1992</year>    
  <school>Univ.   of   Wisconsin-Madison</school>    
  </mastersthesis>  
  <mastersthesis   mdate="2002-01-03"   key="ms/Yurek97">  
  <author>Tolga   Yurek</author>    
  <title>Efficient   View   Maintenance   at   Data   Warehouses.</title>    
  <year>1997</year>    
  <school>University   of   California   at   Santa   Barbara</school>    
  </mastersthesis>  
    </dblp>  
   
  现在想要把其中的每个元素进行编码,如  
  dblp:0  
  masterthesis:   0.0  
  author:   0.0.0  
  title:   0.0.1  
  year:   0.0.2  
  ...  
   
  不知道对于这种编码应该怎样存储?  
   
  我的想法是:遍历整个DOM树(VC+MSXML+DOM),为每个非叶子节点添加一个ID属性存储其ID,遍历算法大致如下:  
  void   traverse(IXMLDOMElementPtr   pe,   string   ID){  
      if   (pe->hasChildNodes())  
          addIDAttribute(pe,   ID);  
   
      IXMLDOMNodeListPtr   pNodeList   =   pn->childNodes;  
      if   (pNodeList)  
          for(int   i=0;   i<pNodeList->length;   i++)  
              traverse(pNodeList->item[i]);  
  }  
   
  问题如下:  
  1。addIDAttribute应当如何写?  
  2。traverse的第一个参数类型能否用IXMLDOMNodePtr?I 问题点数:50、回复次数:6Top

1 楼ytdmm(相忘于江湖)回复于 2005-03-14 15:41:41 得分 0

3。IXMLDOMNode和IXMLDOMElement有什么区别?Top

2 楼ssm1226(雨中人(虚心学习))回复于 2005-03-14 16:05:59 得分 2

对c不熟,试试setAttribute  
   
  http://msdn.microsoft.com/library/en-us/xmlsdk/html/xmmthsetAttribute.asp?frame=trueTop

3 楼fcuandy(了此残生.)回复于 2005-03-14 16:16:14 得分 2

做遍历很简单,但不懂vcTop

4 楼ytdmm(相忘于江湖)回复于 2005-03-14 16:30:18 得分 0

谢谢大家回复~~  
   
  to:ssm1226(雨中人)    
   
  setAttribute是IXMLDOMElement的method,但不是IXMLDOMNode的method呀!能否给一个Node添加attribute呢?  
   
  但是如果用IXMLDOMElement遍历,遇到叶子节点时,在if   (pe->hasChildNodes())这一句总是过不去。Top

5 楼voljinsmm()回复于 2005-03-16 22:14:06 得分 46

1.  
  //IXMLDOMNodePtr   pn;  
  if   (pn->hasChildNodes()) //add   ID   as   a   new   attribute  
  {  
  IXMLDOMElementPtr   pe   =   pn;  
  IXMLDOMAttributePtr   pa   =   pXMLDom->createAttribute("ID");  
  pa->value   =   _bstr_t(ID);  
  pe->setAttributeNode(pa);  
  }  
  2.traverse的参数必须用IXMLDOMNodePtr,   不能用IXMLDOMElementPtr  
  3.Element是Node的一种,   ...Ptr则是指向它们的指针  
   
  Top

6 楼ytdmm(相忘于江湖)回复于 2005-03-17 09:10:03 得分 0

回答的太到位了。结贴!Top

相关问题

  • XML遍历问题
  • 遍历XML数的问题
  • 怎样遍历XML格式的字串?
  • XML 编码问题
  • xml编码问题!
  • 请问使用javascript和DOM怎么遍历读取带参数的XML文件? 顶的也有分。。。
  • 文件夹和文件的遍历
  • 请教 二叉树的后续遍历 和 层次遍历算法???急急!!!
  • 如何遍历一个XML文件所有的节点
  • 如何在XSLT中遍历XML节点的所有属性?

关键词

  • 编码
  • 遍历
  • ixmldomelementptr
  • traverse
  • ixmldomnodeptr
  • pnodelist
  • ixmldomelement
  • haschildnodes
  • pn
  • pe

得分解答快速导航

  • 帖主:ytdmm
  • ssm1226
  • fcuandy
  • voljinsmm

相关链接

  • Web开发类图书

广告也精彩

反馈

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