读取XML也有两种方式,如果要读取一个大且复杂的XML文件,使用XmlDocument会比较慢,使用XmlTextReader就会比较快
1. 使用XmlDocument读取XML
class Program
{
const string sourceXml =
“<Book PublishYear=\“2009\”>” +
“<Title>Programming, art or engineering?</Title>” +
“<Author>Billy Bob</Author>” +
“</Book>”;
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(sourceXml);
Console.WriteLine(“Publish Year: {0}”, doc.GetElementsByTagName(“Book”)[0].Attributes[“PublishYear”].Value);
Console.WriteLine(“Author: {0}”, doc.GetElementsByTagName(“Author”)[0].InnerText);
}
}
2. 使用XmlTextReader读取XML
XmlTextReade类能从很多种源中读取Xml。但需要使用StringReader为XmlTextReader将一个字符串转换成流
class Program
{
const string sourceXml =
“<Book PublishYear=\”2009\”>” +
“<Title>Programming, art or engineering?</Title>” +
“<Author>Billy Bob</Author>” +
“</Book>”;
static void Main(string[] args)
{
string publishYear = null, author = null;
using (StringReader reader = new StringReader(sourceXml))
using (XmlTextReader xmlReader = new XmlTextReader(reader))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
if (xmlReader.Name == “Book”)
{
if (xmlReader.MoveToAttribute(“PublishYear”))
{
publishYear = xmlReader.Value;
}
}
else if (xmlReader.Name == “Author”)
{
xmlReader.Read();
author = xmlReader.Value;
}
}
}
}
Console.WriteLine(“Publish Year: {0}”, publishYear);
Console.WriteLine(“Author: {0}”, author);
}
}