- C#读取XML文档之XMLTextReader 类有一些构造程序来适应各种各样的情况,比如从一个已经存在的数据流或统一资源定位网址读取数据。最常见的是,你或许想从一个文件读取XML数据,那么也就有一个相应的构造程序来为此服务。
XMLTextReader myReader;
myReader = New XMLTextReader("c:\data\sales.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} ;