转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
.NETFramework轻松处理XML数据(2)         ★★★★

.NETFramework轻松处理XML数据(2)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:785 更新时间:2009/4/23 11:18:20
     Figure 3 Outputting an XML Document Node Layout
  string GetXmlFileNodeLayout(string file)
  {
  // 创建一个XmlTextReader类使它指向目标XML文档
  XmlTextReader reader = new XmlTextReader(file);
  // 循环取出节点的文本并放入到StringWriter对象实例中
  StringWriter writer = new StringWriter();
  string tabPrefix = "";
  while (reader.Read())
  {
  // 写开始标志,如果节点类型为元素
  if (reader.NodeType == XmlNodeType.Element)
  {
  //根据元素所处节点的深度,加入reader.Depth个tab符,然后把元素名写入到<>中。
  tabPrefix = new string(’\t’, reader.Depth);
  writer.WriteLine("{0}<{1}>", tabPrefix, reader.Name);
  }
  else
  {
  //写结束标志,如果节点类型为元素
  if (reader.NodeType == XmlNodeType.EndElement)
  {
  tabPrefix = new string(’\t’, reader.Depth);
  writer.WriteLine("{0}", tabPrefix, reader.Name);
  }
  }
  }
  // 输出到屏幕
  string buf = writer.ToString();
  writer.Close();
  // 关闭流
  reader.Close();
  return buf;
  }
  
  图三演示了一个简单的用于输出一个给定的XML文档的节点元素的函数。该函数先打开一个XML文档,然后用循环处理XML文档中所有的内容。每次调用Read方法,阅读器的指针都会向下移一个节点。大部分情况下,用Read方法可以处理的元素节点,但有时候,当你从一个节点移动到下一个节点时,可能是在两个不同类型的节点间移动。但是Read方法不能在属性节点之间移动。阅读器的MoveToContent方法可以让指针从头部节点位置跳到第一个内容节点位置。在ProcessingInstruction, DocumentType, Comment, Whitespace和SignificantWhitespace类型节点中也可以用Skip方法移动指针。
  每个节点的类型是XmlNodeType枚举中的一种,在如图三所示的代码中,我们只用了其中的两种类型:Element 和 EndElement。输出源码重新定制了原始的文档结构,它丢弃或者说是忽略了XML元素的属性和节点内容,只输出了元素节点名。假设我们运用了下面的XML片断:
  <mags>
  <mag name="MSDN Magazine">
  MSDN Magazine
  </mag>
  <mag name="MSDN Voices">
  MSDN Voices
  </mag>
  </mags>
  用上面的程序输出的结果如下:
  <mags>
  <mag>
  </mag>
  <mag>
  </mag>
  </mags>
  子节点的缩进量是根据阅读器的深度属性(Depth属性)设置的,Depth属性返回一个整形的数据,它表示当前节点的嵌套层次。所有文本都放在StringWriter对象中(一个非常方便的基于流的封装了StrigBuilder类的类)。
  如前所述,阅读器不会自动通过Read方法访问属性节点。要访问当前元素的属性节点集合,必须用一个简单的用MoveToNextAttribute方法的返回值控制的循环去遍历该集合。下面的代码用于访问当前节点的所有属性,并把属性的名称和它的值用逗号分开组合成一个字符串:
  if (reader.HasAttributes)
  while(reader.MoveToNextAttribute())
  buf += reader.Name + "=\"" + reader.Value + "\",";
  reader.MoveToElement();
  当你完成对属性集的处理时,调用MoveToElement方法使指针返回到属性所属的元素节点。准确的说,MoveToElement方法并不是真正的移动指针,因为在处理属性集时指针从来就没有从元素节点中移开。MoveToElement方法只不过指向某个内部成员,并依次取得成员的值。例如,用Name属性获得某个属性的属性名,然后调用MoveToElement方法把指针移到其所属的元素节点处。但是当你不需要继续处理别的节点时,就不必再调用MoveToElement方法了。
  
    


[Web开发]XML与HTML在语法上的主要区别详解  [系统软件]如何让Expat支持中文XML
[VB.NET程序]vb.net 与 XML 的操作  [VB.NET程序]vb.net读写xml(2)--实现datagrid与xml的沟通(原创…
[VB.NET程序]vb.net 读写xml方法(1)  [VB.NET程序][VB.NET+XML]完成简单程序配置
[VB.NET程序]使用Visual Basic操纵XML文档  [VB.NET程序]XML 简单接口 (SAX2)用Visual Basic 实现的示例
[Delphi程序]Delphi 6 XML映象工具  [Delphi程序]Delphi 6 XML数据绑定
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台