1. Books.xml内容
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<?
xml version="1.0" encoding="utf-8"
?>
< catalog >
< book id ="bk101" >
< author > Gambardella, Matthew </ author >
< title > XML Developer's Guide </ title >
< genre > Computer </ genre >
< price > 44.95 </ price >
< publish_date > 2000-10-01 </ publish_date >
< description >
An in-depth look at creating applications
with XML.
</ description >
</ book >
< book id ="bk102" >
< author > Ralls, Kim </ author >
< title > Midnight Rain </ title >
< genre > Fantasy </ genre >
< price > 5.95 </ price >
< publish_date > 2000-12-16 </ publish_date >
< description >
A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.
</ description >
</ book >
</ catalog >
< catalog >
< book id ="bk101" >
< author > Gambardella, Matthew </ author >
< title > XML Developer's Guide </ title >
< genre > Computer </ genre >
< price > 44.95 </ price >
< publish_date > 2000-10-01 </ publish_date >
< description >
An in-depth look at creating applications
with XML.
</ description >
</ book >
< book id ="bk102" >
< author > Ralls, Kim </ author >
< title > Midnight Rain </ title >
< genre > Fantasy </ genre >
< price > 5.95 </ price >
< publish_date > 2000-12-16 </ publish_date >
< description >
A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.
</ description >
</ book >
</ catalog >
2. 使用XmlTextReader读取xml文件
XmlTextReader是一个阅读器指针,它总是向前移动,读出一块数据到内存缓冲器。比起XmlDocument类加载整个文档到内存有更好的性能。
void ReadByXmlTextReader()
{
XmlTextReader reader = new XmlTextReader("Books.xml");
reader.WhitespaceHandling = WhitespaceHandling.None;
while (reader.Read()) {
if (reader.Name == "book") {
Console.WriteLine(reader.GetAttribute("id") + ": ");
reader.Read();
string author = reader.ReadElementContentAsString();
string title = reader.ReadElementContentAsString();
string genre = reader.ReadElementContentAsString();
string price = reader.ReadElementContentAsString();
string publishDate = reader.ReadElementContentAsString();
string description = reader.ReadElementContentAsString();
Console.WriteLine("{0} book {1} written by {2}, published on {3}", genre, title, author, publishDate);
Console.WriteLine(description);
}
}
reader.Close();
}
3.使用XmlDocument和XmlNodeReader读取文件
XmlNodeReader类似于XmlTextReader,但是接受一个XmlNode实例作为读出目标。
void ReadByXmlDocument()
{
var doc = new XmlDocument();
doc.Load("Books.xml");
var nodes = doc.GetElementsByTagName("book");
foreach (XmlNode node in nodes) {
Console.WriteLine(node.Attributes["id"].Value + ":");
var reader = new XmlNodeReader(node);
reader.Read();
reader.Read();
string author = reader.ReadElementContentAsString();
string title = reader.ReadElementContentAsString();
string genre = reader.ReadElementContentAsString();
string price = reader.ReadElementContentAsString();
string publishDate = reader.ReadElementContentAsString();
string description = reader.ReadElementContentAsString();
Console.WriteLine("{0} book {1} written by {2}, published on {3}", genre, title, author, publishDate);
Console.WriteLine(description);
}
}
4.修改Xml文件
XmlLDocument没有Close或者Dispose方法,因为它是XML文档的内存表现。一旦读出,文件不再被需要。
void ChangeXmlDocument()
{
var xmlDocument = new XmlDocument();
xmlDocument.Load("Books.xml");
XmlNode nodeToModify = xmlDocument.DocumentElement.SelectSingleNode("book/genre");
nodeToModify.InnerText = "XML Tech";
XmlElement newElement = xmlDocument.CreateElement("book");
XmlAttribute newAttribute = xmlDocument.CreateAttribute("id");
newAttribute.Value = "bk103";
newElement.Attributes.Append(newAttribute);
XmlElement authorElement = xmlDocument.CreateElement("author");
authorElement.InnerText = "Mark Russinovich,David Solomon,Alex Ionecsu";
newElement.AppendChild(authorElement);
XmlElement titleElement = xmlDocument.CreateElement("title");
titleElement.InnerText = "Windows Internals, 5th edition";
newElement.AppendChild(titleElement);
XmlElement genreElement = xmlDocument.CreateElement("genre");
genreElement.InnerText = "Windows Server 2008";
newElement.AppendChild(genreElement);
XmlElement priceElement = xmlDocument.CreateElement("price");
priceElement.InnerText = "69.99";
newElement.AppendChild(priceElement);
XmlElement publishDateElement = xmlDocument.CreateElement("publish_date");
publishDateElement.InnerText = "2009-6-17";
newElement.AppendChild(publishDateElement);
XmlElement descriptionElement = xmlDocument.CreateElement("description");
descriptionElement.InnerText = "Windows Internals...";
newElement.AppendChild(descriptionElement);
xmlDocument.DocumentElement.AppendChild(newElement);
xmlDocument.Save("Books.xml");
}