4.0 第三十三章 XML
生活随笔
收集整理的這篇文章主要介紹了
4.0 第三十三章 XML
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用XMLReader類
XMLReader是一個抽象類,直接使用XMLReader必須使用靜態(tài)方法Create,返回XMLReader對象
在讀每個節(jié)點時,都要檢查Nodetype屬性,如果是文本就輸出
?XmlReader reader = XmlReader.Create("books.xml");
? ? ? ? ? ? while (reader.Read())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader.NodeType == XmlNodeType.Text)
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader.Value+"\n\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
ReadElementString
可以選擇以元素名作為參數(shù),只讀取string類型。
示例中 如果節(jié)點類型不是element,或者名稱不是title,就會調(diào)用reader()方法進入下一個節(jié)點。
在成功執(zhí)行ReadElementString不需要調(diào)用reader方法,因為ReadElementString已經(jīng)調(diào)用了整個Element,并定為到下一個節(jié)點
XmlReader reader2 = XmlReader.Create("books.xml");
? ? ? ? ? ? while (!reader2.EOF)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader2.MoveToContent() == XmlNodeType.Element && reader2.Name == "title")
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader2.ReadElementString() + "\n\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? reader2.Read();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
如果去掉reader2.Name == "title",會出錯因為MoveToContent檢查到的第一個元素不包含文本類型
所以代碼1可以變成
? XmlReader reader2 = XmlReader.Create("books.xml");
? ? ? ? ? ? while (!reader2.EOF)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader2.MoveToContent() == XmlNodeType.Element )
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader2.ReadElementString() + "\n\n");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? catch (XmlException ex) { }//如果發(fā)生異常,就跳過
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? reader2.Read();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
XMLReader類進行驗證
可以使用XmlReaderSettings,根據(jù)XSD架構(gòu)驗證XML
XSD架構(gòu)
去掉了XML中的一個必須節(jié)點ISBN,這樣在驗證時會抱錯
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.test.com/books2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
? ? <xs:element name="bookstore">
? ? ? ? <xs:complexType>
? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? <xs:element maxOccurs="unbounded" name="book">
? ? ? ? ? ? ? ? ? ? <xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="title" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="author">
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="first-name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="last-name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:element>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="price" type="xs:decimal" />
? ? ? ? ? ? ? ? ? ? ? ? </xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="genre" type="xs:string" use="required" />
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="publicationdate" type="xs:date" use="required" />
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="ISBN" type="xs:string" use="required" />
? ? ? ? ? ? ? ? ? ? </xs:complexType>
? ? ? ? ? ? ? ? </xs:element>
? ? ? ? ? ? </xs:sequence>
? ? ? ? </xs:complexType>
? ? </xs:element>
</xs:schema>
XML架構(gòu)
<bookstore xmlns="http://www.test.com/books2">
? <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
? ? <title>The Autobiography of Benjamin Franklin</title>
? ? <author>
? ? ? <first-name>Benjamin</first-name>
? ? ? <last-name>Franklin</last-name>
? ? </author>
? ? <price>8.99</price>
? </book>
? <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
? ? <title>The Confidence Man</title>
? ? <author>
? ? ? <first-name>Herman</first-name>
? ? ? <last-name>Melville</last-name>
? ? </author>
? ? <price>11.99</price>
? </book>
? <book genre="philosophy" publicationdate="1991-02-15">
? ? <title>The Gorgias</title>
? ? <author>
? ? ? <name>Plato</name>
? ? </author>
? ? <price>9.99</price>
? </book>
</bookstore>
使用XmlDocument類
讀取節(jié)點
? XmlDocument doc = new XmlDocument();
? ? ? ? ? ? doc.Load("books.xml");
? ? ? ? ? ? XmlNodeList nodelst = doc.GetElementsByTagName("title");
? ? ? ? ? ? foreach (XmlNode node in nodelst)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(node.OuterXml + "\r\n");
? ? ? ? ? ? }
插入節(jié)點
XmlTextWriter的局限性是不能將節(jié)點插入到當前文檔中,但是XmlDocument 可以做到
?XmlDocument doc = new XmlDocument();
? ? ? ? ? ? doc.Load("books.xml");
? ? ? ? ? ? XmlElement newBook = doc.CreateElement("book");
? ? ? ? ? ? newBook.SetAttribute("genre", "mystry");
? ? ? ? ? ? newBook.SetAttribute("publicationdate", "2005-01-01");
? ? ? ? ? ? newBook.SetAttribute("ISBN", "0-201-6336-1-1");
? ? ? ? ? ? XmlElement newTitle = doc.CreateElement("title");
? ? ? ? ? ? newTitle.InnerText = "The Case of Mistry";
? ? ? ? ? ? newBook.AppendChild(newTitle);
? ? ? ? ? ? XmlElement newAuthor = doc.CreateElement("author");
? ? ? ? ? ? newBook.AppendChild(newAuthor);
? ? ? ? ? ? XmlElement newName = doc.CreateElement("name");
? ? ? ? ? ? newName.InnerText = "Cook Monster";
? ? ? ? ? ? newBook.AppendChild(newName);
? ? ? ? ? ? XmlElement newProce = doc.CreateElement("price");
? ? ? ? ? ? newProce.InnerText = "9.95";
? ? ? ? ? ? newBook.AppendChild(newProce);
? ? ? ? ? ? doc.DocumentElement.AppendChild(newBook);
? ? ? ? ? ? //新建一個XmlTextWriter,把它傳遞給writecontentto方法,WriteContentTo把當前節(jié)點及所有子節(jié)點都保存在XmlTextWriter
? ? ? ? ? ? XmlTextWriter tr = new XmlTextWriter("booksedit",null);
? ? ? ? ? ? doc.WriteTo(tr);
? ? ? ? ? ? tr.Close();
XPathNavigator類
XPathNavigator類包含移動和選擇XML所需元素的所有方法。
1.創(chuàng)建:
? a.如果是從XPathDocument中創(chuàng)建,則是只讀的,只能瀏覽數(shù)據(jù);
? b.如果是從XmlDocument中創(chuàng)建,則可以編輯文檔;
2.查詢:使用Select()方法通過XPath語句查詢;
3.迭代:使用XPathNodeIterator類,MoveNext()方法移動下一個節(jié)點;Current屬性表示當前節(jié)點;
4.求值:使用Evaluate()方法計算表達式的值;
5.插入節(jié)點:先檢查CanEdit屬性是否為true,再使用InsertAfter()方法插入新節(jié)點。
//打印總價
XPathDocument doc=new XPathDocument("books.xml");
XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator(); ? ? ? ? ? ? ? ?
Console.WriteLine( nav.Evaluate("sum(/bookstore/book/price)"));//計算總價
? ? //
打印價格和總價
XPathDocument doc=new XPathDocument("books.xml");
? ? ? ? ? ?XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
? ? ? ? ? ?XPathNodeIterator iter = nav.Select("/bookstore/book");
? ? ? ? ? ?while (iter.MoveNext())
? ? ? ? ? ?{
? ? ? ? ? ? ? ?XPathNodeIterator newIter = iter.Current.SelectDescendants(XPathNodeType.Element, false);
? ? ? ? ? ? ? ?while (newIter.MoveNext())
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?if (newIter.Current.Name == "price")
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?Console.WriteLine(newIter.Current.Name + " : " + newIter.Current.Value);
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}?
? ? ? ? ? ? ?Console.WriteLine( nav.Evaluate("sum(/bookstore/book/price)"));
? ??
//增加節(jié)點
?XmlDocument doc=new XmlDocument();
? ? ? ? ? ?doc.Load("books.xml");
? ? ? ? ? ?XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
? ? ? ? ? ?XPathNodeIterator iter = nav.Select("/bookstore/book/price");
? ? ? ? ? ?if (nav.CanEdit)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?while (iter.MoveNext())
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?iter.Current.InsertAfter("<disc>0.5</disc>");
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?doc.Save("NewBooks.xml");
? ? ? ? ? ?}
//讀到DataSet中
? ?public DataSet getXML()
? ? ? ? {
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? DataSet ds = new DataSet();
? ? ? ? ? ? ? ? StreamReader sr = new StreamReader("books.xml", Encoding.Default);
? ? ? ? ? ? ? ? ds.ReadXml(sr);
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? sr.Close();
? ? ? ? ? ? ? ? if (ds.Tables.Count > 0)
? ? ? ? ? ? ? ? ? ? return ds;
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }
? ? ? ? ? ? catch (Exception)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }
? ? ? ? }
XDocument對象
XDocument替代了3.5之前的俄XmlDocument
? ? ? ? ? ? XDocument xDoc = XDocument.Load("books.xml");
? ? ? ? ? ? Console.WriteLine(xDoc.Root.Name.ToString());
? ? ? ? ? ? Console.WriteLine(xDoc.Root.HasAttributes);
//輸出:
bookstore
false
XElement:可以創(chuàng)建單個元素對象
? XElement xe = new XElement("Company",new XAttribute("A","MyAttri"), new XElement("ComanyName", "Citi"), new XElement("CompanyAddress", new XElement("Address", "Main Street 123"), new XElement("Code", "454123")));
? ? ? ? ? ?Console.WriteLine(xe.ToString());
XMLReader是一個抽象類,直接使用XMLReader必須使用靜態(tài)方法Create,返回XMLReader對象
在讀每個節(jié)點時,都要檢查Nodetype屬性,如果是文本就輸出
?XmlReader reader = XmlReader.Create("books.xml");
? ? ? ? ? ? while (reader.Read())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader.NodeType == XmlNodeType.Text)
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader.Value+"\n\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
ReadElementString
可以選擇以元素名作為參數(shù),只讀取string類型。
示例中 如果節(jié)點類型不是element,或者名稱不是title,就會調(diào)用reader()方法進入下一個節(jié)點。
在成功執(zhí)行ReadElementString不需要調(diào)用reader方法,因為ReadElementString已經(jīng)調(diào)用了整個Element,并定為到下一個節(jié)點
XmlReader reader2 = XmlReader.Create("books.xml");
? ? ? ? ? ? while (!reader2.EOF)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader2.MoveToContent() == XmlNodeType.Element && reader2.Name == "title")
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader2.ReadElementString() + "\n\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? reader2.Read();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
如果去掉reader2.Name == "title",會出錯因為MoveToContent檢查到的第一個元素不包含文本類型
所以代碼1可以變成
? XmlReader reader2 = XmlReader.Create("books.xml");
? ? ? ? ? ? while (!reader2.EOF)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader2.MoveToContent() == XmlNodeType.Element )
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine(reader2.ReadElementString() + "\n\n");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? catch (XmlException ex) { }//如果發(fā)生異常,就跳過
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? reader2.Read();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
XMLReader類進行驗證
可以使用XmlReaderSettings,根據(jù)XSD架構(gòu)驗證XML
XSD架構(gòu)
去掉了XML中的一個必須節(jié)點ISBN,這樣在驗證時會抱錯
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.test.com/books2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
? ? <xs:element name="bookstore">
? ? ? ? <xs:complexType>
? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? <xs:element maxOccurs="unbounded" name="book">
? ? ? ? ? ? ? ? ? ? <xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="title" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="author">
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="first-name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element minOccurs="0" name="last-name" type="xs:string" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:complexType>
? ? ? ? ? ? ? ? ? ? ? ? ? ? </xs:element>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <xs:element name="price" type="xs:decimal" />
? ? ? ? ? ? ? ? ? ? ? ? </xs:sequence>
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="genre" type="xs:string" use="required" />
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="publicationdate" type="xs:date" use="required" />
? ? ? ? ? ? ? ? ? ? ? ? <xs:attribute name="ISBN" type="xs:string" use="required" />
? ? ? ? ? ? ? ? ? ? </xs:complexType>
? ? ? ? ? ? ? ? </xs:element>
? ? ? ? ? ? </xs:sequence>
? ? ? ? </xs:complexType>
? ? </xs:element>
</xs:schema>
XML架構(gòu)
<bookstore xmlns="http://www.test.com/books2">
? <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
? ? <title>The Autobiography of Benjamin Franklin</title>
? ? <author>
? ? ? <first-name>Benjamin</first-name>
? ? ? <last-name>Franklin</last-name>
? ? </author>
? ? <price>8.99</price>
? </book>
? <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
? ? <title>The Confidence Man</title>
? ? <author>
? ? ? <first-name>Herman</first-name>
? ? ? <last-name>Melville</last-name>
? ? </author>
? ? <price>11.99</price>
? </book>
? <book genre="philosophy" publicationdate="1991-02-15">
? ? <title>The Gorgias</title>
? ? <author>
? ? ? <name>Plato</name>
? ? </author>
? ? <price>9.99</price>
? </book>
</bookstore>
使用XmlDocument類
讀取節(jié)點
? XmlDocument doc = new XmlDocument();
? ? ? ? ? ? doc.Load("books.xml");
? ? ? ? ? ? XmlNodeList nodelst = doc.GetElementsByTagName("title");
? ? ? ? ? ? foreach (XmlNode node in nodelst)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(node.OuterXml + "\r\n");
? ? ? ? ? ? }
插入節(jié)點
XmlTextWriter的局限性是不能將節(jié)點插入到當前文檔中,但是XmlDocument 可以做到
?XmlDocument doc = new XmlDocument();
? ? ? ? ? ? doc.Load("books.xml");
? ? ? ? ? ? XmlElement newBook = doc.CreateElement("book");
? ? ? ? ? ? newBook.SetAttribute("genre", "mystry");
? ? ? ? ? ? newBook.SetAttribute("publicationdate", "2005-01-01");
? ? ? ? ? ? newBook.SetAttribute("ISBN", "0-201-6336-1-1");
? ? ? ? ? ? XmlElement newTitle = doc.CreateElement("title");
? ? ? ? ? ? newTitle.InnerText = "The Case of Mistry";
? ? ? ? ? ? newBook.AppendChild(newTitle);
? ? ? ? ? ? XmlElement newAuthor = doc.CreateElement("author");
? ? ? ? ? ? newBook.AppendChild(newAuthor);
? ? ? ? ? ? XmlElement newName = doc.CreateElement("name");
? ? ? ? ? ? newName.InnerText = "Cook Monster";
? ? ? ? ? ? newBook.AppendChild(newName);
? ? ? ? ? ? XmlElement newProce = doc.CreateElement("price");
? ? ? ? ? ? newProce.InnerText = "9.95";
? ? ? ? ? ? newBook.AppendChild(newProce);
? ? ? ? ? ? doc.DocumentElement.AppendChild(newBook);
? ? ? ? ? ? //新建一個XmlTextWriter,把它傳遞給writecontentto方法,WriteContentTo把當前節(jié)點及所有子節(jié)點都保存在XmlTextWriter
? ? ? ? ? ? XmlTextWriter tr = new XmlTextWriter("booksedit",null);
? ? ? ? ? ? doc.WriteTo(tr);
? ? ? ? ? ? tr.Close();
XPathNavigator類
XPathNavigator類包含移動和選擇XML所需元素的所有方法。
1.創(chuàng)建:
? a.如果是從XPathDocument中創(chuàng)建,則是只讀的,只能瀏覽數(shù)據(jù);
? b.如果是從XmlDocument中創(chuàng)建,則可以編輯文檔;
2.查詢:使用Select()方法通過XPath語句查詢;
3.迭代:使用XPathNodeIterator類,MoveNext()方法移動下一個節(jié)點;Current屬性表示當前節(jié)點;
4.求值:使用Evaluate()方法計算表達式的值;
5.插入節(jié)點:先檢查CanEdit屬性是否為true,再使用InsertAfter()方法插入新節(jié)點。
//打印總價
XPathDocument doc=new XPathDocument("books.xml");
XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator(); ? ? ? ? ? ? ? ?
Console.WriteLine( nav.Evaluate("sum(/bookstore/book/price)"));//計算總價
? ? //
打印價格和總價
XPathDocument doc=new XPathDocument("books.xml");
? ? ? ? ? ?XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
? ? ? ? ? ?XPathNodeIterator iter = nav.Select("/bookstore/book");
? ? ? ? ? ?while (iter.MoveNext())
? ? ? ? ? ?{
? ? ? ? ? ? ? ?XPathNodeIterator newIter = iter.Current.SelectDescendants(XPathNodeType.Element, false);
? ? ? ? ? ? ? ?while (newIter.MoveNext())
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?if (newIter.Current.Name == "price")
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?Console.WriteLine(newIter.Current.Name + " : " + newIter.Current.Value);
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}?
? ? ? ? ? ? ?Console.WriteLine( nav.Evaluate("sum(/bookstore/book/price)"));
? ??
//增加節(jié)點
?XmlDocument doc=new XmlDocument();
? ? ? ? ? ?doc.Load("books.xml");
? ? ? ? ? ?XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
? ? ? ? ? ?XPathNodeIterator iter = nav.Select("/bookstore/book/price");
? ? ? ? ? ?if (nav.CanEdit)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?while (iter.MoveNext())
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?iter.Current.InsertAfter("<disc>0.5</disc>");
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?doc.Save("NewBooks.xml");
? ? ? ? ? ?}
//讀到DataSet中
? ?public DataSet getXML()
? ? ? ? {
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? DataSet ds = new DataSet();
? ? ? ? ? ? ? ? StreamReader sr = new StreamReader("books.xml", Encoding.Default);
? ? ? ? ? ? ? ? ds.ReadXml(sr);
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? sr.Close();
? ? ? ? ? ? ? ? if (ds.Tables.Count > 0)
? ? ? ? ? ? ? ? ? ? return ds;
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }
? ? ? ? ? ? catch (Exception)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }
? ? ? ? }
XDocument對象
XDocument替代了3.5之前的俄XmlDocument
? ? ? ? ? ? XDocument xDoc = XDocument.Load("books.xml");
? ? ? ? ? ? Console.WriteLine(xDoc.Root.Name.ToString());
? ? ? ? ? ? Console.WriteLine(xDoc.Root.HasAttributes);
//輸出:
bookstore
false
XElement:可以創(chuàng)建單個元素對象
? XElement xe = new XElement("Company",new XAttribute("A","MyAttri"), new XElement("ComanyName", "Citi"), new XElement("CompanyAddress", new XElement("Address", "Main Street 123"), new XElement("Code", "454123")));
? ? ? ? ? ?Console.WriteLine(xe.ToString());
總結(jié)
以上是生活随笔為你收集整理的4.0 第三十三章 XML的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPU/CPU
- 下一篇: Sue 的小球 ball