• XML参考 :XmlReader 详解、实例(1) 详解


    .NET Framework 类库

    XmlReader 类

     

    表示提供对 XML 数据进行快速、非缓存、只进访问的读取器,即 对 XML 数据流的只进只读访问。XmlReader 类符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议。

    XmlReader 在发生 XML 分析错误时引发 XmlException。引发异常后,读取器的状态不可预知。例如,报告的节点类型可能不同于当前节点的实际节点类型。使用 ReadState 属性可以检查读取器是否处于错误状态。

    一、使用XmlReader类的步骤如下

    (1) 使用XmlReader类的Create()创建该类的一个实例,并将被读取的XML文件名称作为参数传入方法

    (2) 建立一个反复调用的Read()方法的循环。这个方法从文件的第一个节点开始,然后读取所有余下的节点,但每次调用只读取一个节点,如果存在一个节点可被读取 则返回True,当到达文件最后时返回False.

    (3) 在这个循环中将检查XmlReader对象的属性和方法,以获得当前节点的信息(类型、名称、数据等等),不断地执行该循环知道Read()返回False.

    (一)开始读取文档

    要开始读取xml文档,你可以调用任意一个Read()方法,XmlReader XmlTextReaderXmlNodeReaderXmlValidatingReader 如:

    XmlReader reader = XmlReader.Create("Employees.xml");
    reader.ReadStartElement();

    或者reader.MoveToContent()直接跳至文档内容。如果当前节点不是内容节点(内容节点是CDATA, Element,Entity,EntityReference).如果位于属性上,将会返回至包含该属性的元素。

    【重要事项】:

    虽然 Microsoft .NET Framework 包含 XmlReader 类的具体实现,如 XmlTextReaderXmlNodeReaderXmlValidatingReader 类,但是在 2.0 版本中,建议的做法是使用 Create 方法创建 XmlReader 实例。

     

    (二)读取元素

    (1)Read(), ReadString(),ReadStartElement(),ReadEndElement()都能读取Element节点。

    (2)每个方法都调到文档的下一个节点。

    (3)MovetoElement()只移动到下一个节点而不读取它。

    当XmlReader读取文档时,它的状态有可能如下:

    成员名称 说明
    Closed 已调用 Close 方法。
    EndOfFile 已成功到达文件结尾。
    Error 出现错误,阻止读取操作继续进行。
    Initial 未调用 Read 方法。
    Interactive 已调用 Read 方法。可能对读取器调用了其他方法。
     
    (三)读取属性
    应当先用HasAttributes检查是否有属性,然后可以通过MoveToAttribute(), MoveToFirstAttribute(),MoveToNextAttribute()来访问
          XmlReader reader = XmlReader.Create("Employees.xml");
          
    if (reader.HasAttributes)
          
    {
             reader.MoveToAttribute(
    "id");
          }
     

    (四)读取内容和其他数据

    ReadString()读取当前节点内容为字符串,还可以使用ReadElementContentAsXXX(),ReadContentAsXXX可以在当前位置读取文本内容。

    该方法返回元素的内容、文本、空白、重要空白或 CDATA 节点。

    如果定位在元素上,ReadString 将所有文本、重要的空白、空白和 CDATA 节节点串联在一起,然后将串联在一起的数据作为元素内容返回。当遇到任何标记(包括注释和处理指令)时,它就会停止。这可以在混合内容模型中发生,也可以在读取元素结束标记时发生。

    如果定位在元素文本节点上,则 ReadString 执行相同的串联,即从该文本节点到元素结束标记。如果读取器定位在属性文本节点上,则 ReadString 与读取器定位在元素开始标记上时的功能相同。它返回所有串联在一起的元素文本节点。

    如果定位在属性上,则 ReadString 将返回空字符串,并将读取器移回到拥有该属性的元素。

    如果在任何其他节点类型上调用 ReadString,则它将返回空的字符串并将读取器定位在下一个节点上。

     

    [实例] 见下篇文章...

     
  • 相关阅读:
    C# Tips Written By Andrew Troelsen
    ASP.NET:性能与缓存
    New Feature In C# 2.0
    .NET Remoting中的通道注册
    通过应用程序域AppDomain加载和卸载程序集
    Some BrainTeaser in WinDev, Can you Solve them?
    ExtJs学习笔记(24)Drag/Drop拖动功能
    wap开发体会
    关于”System.ServiceModel.Activation.WebServiceHostFactory“与"<webHttp/>"以及RestFul/启用了Ajax的WCF服务
    验证码无刷新更换
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1252191.html
Copyright © 2020-2023  润新知