在操作小规模的XMl文件时,可以考虑使用XMLReader.
尽管在 .NET Framework 2.0 版中,Microsoft .NET Framework 包括 XmlReader 类的具体实现,例如 XmlTextReader、XmlNodeReader 和 XmlValidatingReader 类,但是,我们建议您使用 Create 方法创建 XmlReader 实例。
使用 XmlReaderSettings 类的属性启用或禁用功能。然后,XmlReaderSettings 对象传递给 Create 方法。
通过使用 Create 方法和 XmlReaderSettings 类,您将得到下列好处:
-
可以指定要在所创建的 XmlReader 对象上支持的功能。
-
XmlReaderSettings 类可以重复使用,以创建多个读取器对象。可以使用相同的设置创建多个具有相同功能的读取器。另外,可以修改 XmlReaderSettings 对象并创建具有不同功能集的新读取器。
-
可以将功能添加到现有读取器中。Create 方法可以接受其他 XmlReader 对象。基础 XmlReader 对象可以是用户定义的读取器或 XmlTextReader 对象,也可以是要添加附加功能的另一个 XmlReader 实例。
-
充分利用 .NET Framework 2.0 版本的 XmlReader 类中增加的所有新功能。某些功能只能在通过 Create 方法创建的 XmlReader 对象上使用,例如更好的一致性检查以及与 XML 1.0 建议的一致性。
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
下表介绍 XmlReader 类为处理元素提供的方法和属性。在 XmlReader 置于某个元素上之后,节点属性(例如 Name)将反映元素的值。除了下面所述的成员之外,XmlReader 类的任何常规方法和属性也可以用于处理元素。例如,可以使用 ReadInnerXml 方法读取元素的内容。
using (XmlReader reader = XmlReader.Create("book3.xml")) {
// Parse the XML document. ReadString is used to
// read the text content of the elements.
reader.Read();
reader.ReadStartElement("book");
reader.ReadStartElement("title");
Console.Write("The content of the title element: ");
Console.WriteLine(reader.ReadString());
reader.ReadEndElement();
reader.ReadStartElement("price");
Console.Write("The content of the price element: ");
Console.WriteLine(reader.ReadString());
reader.ReadEndElement();
reader.ReadEndElement();
}
读取元素的属性
在位于某个元素节点上时,使用 MoveToAttribute 方法可以浏览该元素的属性列表。调用了 MoveToAttribute 之后,节点属性(例如 Name、NamespaceURI、Prefix 等)将反映该属性的属性,而不是其所属的包含元素的属性。
下表介绍专门为处理属性而设计的方法和属性。
/ Display all attributes.
if (reader.HasAttributes)
{ Console.WriteLine("Attributes of <" + reader.Name + ">");
for (int i = 0; i < reader.AttributeCount; i++)
{ Console.WriteLine(" {0}", reader[i]); } // Move the reader back to the element node. reader.MoveToElement(); }