C#解析XML之流模型-XMLTextReader类

  • C#读取XML文档之XMLTextReader 类有一些构造程序来适应各种各样的情况,比如从一个已经存在的数据流或统一资源定位网址读取数据。最常见的是,你或许想从一个文件读取XML数据,那么也就有一个相应的构造程序来为此服务。

 XMLTextReader myReader;   

myReader = New XMLTextReader("c:datasales.XML")

  • 创建一个称为Read()方法的循环,这个方法的返回值总是为真,直到到达文件的底部时,返回值才变为假。换句话说, 循环在文件的开始时启动并且读入所有的节点, 一次读入一个节点, 直到到达文件的结尾:

While (myReader.Read()) {  

...  

// 在这里处理每个节点.  

...  

}

  • 每次成功调用Read()之后,XMLTextReader实例化程序包含了目前节点(即刚刚从文件中读取的那个节点)的信息。我们可以从XMLTextReader的成员中获得上述信息,就像表格1中描述的一样;并通过NodeType属性判断出当前节点的类型。在节点类型的基础上,程序的代码可以读取节点数据,检查它是否有属性,到底是忽略它还是根据程序需要进行相应的操作和处理。
  • 当使用NodeType属性时,理解节点怎么联系到XML单元是非常重要的。例如, 看下列 XML元素:

﹤city﹥Chongqing﹤/city﹥

  • C#读取XML文档之XMLtextReader 把这个元素看作 3 个节点,顺序如下:

1.﹤city﹥标签被读为类型

XMLNodeType.Element 节点,元素的名字“city”可从 XMLTextReader 的Name属性中获得。

2.文本数据“Chongqing”被读为类型为XMLNodeType.Text的节点。数据“Chongqing ” 可从XMLTextReader 的Value属性中取得。

3.﹤/city﹥标签被读为类型为XMLNodeType.EndElement 节点。同样,元素的名称“city”可从XMLTextReader的Name属性中获得。

 

enum XmlNodeType {

XmlNodeType_None = 0,

XmlNodeType_Element = 1,

XmlNodeType_Attribute = 2,

XmlNodeType_Text = 3,

XmlNodeType_CDATA = 4,

XmlNodeType_ProcessingInstruction = 7,

XmlNodeType_Comment = 8,

XmlNodeType_DocumentType = 10,

XmlNodeType_Whitespace = 13,

XmlNodeType_EndElement = 15,

XmlNodeType_XmlDeclaration = 17} ;

原文地址:https://www.cnblogs.com/netlzl/p/4343113.html