这个脚本的输出看起来应该像图A里的一样。
如果你仔细察看列表A里的代码,你很可能会感到不解,因为它所做的第一件事是创建XmlTextReader()对象的一个实例,以读取temperatures.xml这个XML文件。不用担心,这样做的原因很简单。要知道,XmlReader()类是一个抽象类,它让开发人员能够对其进行扩展,以便使用XML推模式的特性创建自己的分析器。然而,如果你不具备编写自己的分析器的技术水平,或者就是懒得动手(就像我一样),那么你可以改用XmlTextReader()——它是衍生自XmlReader()抽象类的一个内置类。
同System.Xml程序集里的其他成员一样,XmlTextReader()类具有一个Read()方法,后者能够在碰到XML节点的时候返回真值,而在到达XML树结尾的时候返回伪值。当用在while()循环里的时候,这个方法会确保整个文件都被处理到。
在while()循环里,我使用了NodeType属性来识别element节点,并找出它们的名称(attributes也是如此)。我只对<temperature>和<city>的element的attributes的单位和名称感兴趣。这些属性的值能用GetAttribute()方法取回。每个<month>的温度值都使用ReadString()方法来取得。一旦取得了各个温度值,下一步就是计算每年的平均值。这是通过加上所有的值,然后用总数除以月的数量获得。
|