<?xml version="1.0" encoding="utf-8" ?>
<EmpRecordsData>
<Ecode Id="E0001" EmployeeName="Michael Perry">
<EmpDetails DateofJoin="02-02-1999" Grade="A" salary="1750"/>
</Ecode>
<Ecode Id="E0002" EmployeeName="Jenifer Carell">
<EmpDetails DateofJoin="03-22-1999" Grade="B" salary="2500"/>
</Ecode>
</EmpRecordsData>输出结果为:
第n次调用XmlTextReader.Reader()的次数 + XmlTextReader.Name + XmlTextReader.NodeType
输出处理程序:
XmlTextReader myReader = new XmlTextReader("E:\\MyFiles\\C#\\Employee Records System\\Employee Records System\\EmpRec.xml");
int i;
string str = "";
for (i=1; !myReader.EOF; i++)
{
myReader.Read();
str += "第" + i + "次Read,节点Name:" + myReader.Name + ",节点类型:" + myReader.NodeType + "\r";
}
StreamWriter sw = new StreamWriter("D:\\test.txt", false, System.Text.Encoding.GetEncoding("gb2312"));
sw.Write(str);
sw.Close();
输出结果:
第1次Read,节点Name:xml,节点类型:XmlDeclaration
第2次Read,节点Name:,节点类型:Whitespace
第3次Read,节点Name:EmpRecordsData,节点类型:Element
第4次Read,节点Name:,节点类型:Whitespace
第5次Read,节点Name:Ecode,节点类型:Element
第6次Read,节点Name:,节点类型:Whitespace
第7次Read,节点Name:EmpDetails,节点类型:Element
第8次Read,节点Name:,节点类型:Whitespace
第9次Read,节点Name:Ecode,节点类型:EndElement
第10次Read,节点Name:,节点类型:Whitespace
第11次Read,节点Name:Ecode,节点类型:Element
第12次Read,节点Name:,节点类型:Whitespace
第13次Read,节点Name:EmpDetails,节点类型:Element
第14次Read,节点Name:,节点类型:Whitespace
第15次Read,节点Name:Ecode,节点类型:EndElement
第16次Read,节点Name:,节点类型:Whitespace
第17次Read,节点Name:EmpRecordsData,节点类型:EndElement
第18次Read,节点Name:,节点类型:None
这说明,他是按下面读取的:
比如有一个元素:
<city>Shenzhen</city>
上面它会理解为3个节点;即使节点中没有内容也同样如此.
而且不仅如此,如上面程序反映,所有元素之间的空白处都同样理解为节点,比如
<city>Shenzhen</city>
<city>Hainan</city>
这里的第一个</city>与第二个<city>之间, 同样理解为一个空白节点.
上面只是了解以下.NET此类处理节点的方式,在程序中为了避免出错最好还是用
循环+判断节点Name和NodeType来判断.

浙公网安备 33010602011771号