Heim > Artikel > Backend-Entwicklung > Linq to XML-Methode zum Betrieb von XML
LINQ to XML bietet eine bequemere Möglichkeit, XML zu lesen und zu schreiben. In den Kommentaren früherer Artikel haben Freunde immer erwähnt: Warum verwenden Sie nicht Linq to XML? Jetzt ist es soweit, Linq to XML erscheint.
Der System.Xml.Linq-Namespace in .Net bietet Unterstützung für Linq to XML. XDocument, XElement, XText und XAttribute in diesem Namespace stellen Schlüsselmethoden zum Lesen und Schreiben von XML-Dokumenten bereit.
1. Verwenden Sie linq to xml, um XML zu schreiben:
Verwenden Sie den Konstruktor von XDocument, um ein XML-Dokumentobjekt zu erstellen , verwenden Sie den XAttribute-Konstruktor, um die Attribute des Elements zu erstellen. Verwenden Sie den XText-Konstruktor, um den Text innerhalb des Knotens zu erstellen.
Der folgende Beispielcode:
class Program { static void Main(string[] args) { var xDoc = new XDocument(new XElement( "root", new XElement("dog", new XText("dog said black is a beautify color"), new XAttribute("color", "black")), new XElement("cat"), new XElement("pig", "pig is great"))); //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312 //默认是缩进格式化的xml,而无须格式化设置 xDoc.Save(Console.Out); Console.Read(); } }
Der obige Code gibt das folgende XML aus:
<?xml version="1.0" encoding="gb2312"?> <root> <dog color="black">dog said black is a beautify color</dog> <cat /> <pig>pig is great</pig> </root>
Es ist ersichtlich, dass Linq to XML viel praktischer ist als XmlDocument und XmlWriter.
2. Verwenden Sie Linq to XML, um XML zu lesen
Linq stammt aus der Sammlung Das Abfrageobjekt, die Sammlung in linq to xml, wird über XElements Elements(), Elements(string name) und mehrere überladene Methoden von Descendants, DescendantsAndSelf, Ancestors und AncestorsAndSelf abgerufen.
Nachdem Sie die XElement-Sammlung erhalten haben, können Sie den Attributwert des Elements über die Methode Attribute (Stringname) von XElement und den Textwert des Knotens über das Value-Attribut von XElement abrufen linq zum einfachen Abfragen und Filtern. Nach dem Sortieren von
oder der XML im obigen Beispiel müssen wir alle Bytepunkte des Stamms lesen und wie folgt ausdrucken:
class Program { static void Main(string[] args) { var xDoc = new XDocument(new XElement( "root", new XElement("dog", new XText("dog said black is a beautify color"), new XAttribute("color", "black")), new XElement("cat"), new XElement("pig", "pig is great"))); //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312 //默认是缩进格式化的xml,而无须格式化设置 xDoc.Save(Console.Out); Console.WriteLine(); var query = from item in xDoc.Element( "root").Elements() select new { TypeName = item.Name, Saying = item.Value, Color = item.Attribute("color") == null?(string)null:item.Attribute("color").Value }; foreach (var item in query) { Console.WriteLine("{0} 's color is {1},{0} said {2}",item.TypeName,item.Color??"Unknown",item.Saying??"nothing"); } Console.Read(); } }
3. Linq to XML einfache Anwendung
Antragsvoraussetzungen: Lesen Sie das RSS des Blogs parken und dann die neuesten Blog-Informationen auf Seite 10 ausgeben
Implementierungspunkte: Laden Sie XML über die Load static-Methode von >
Die Entwicklung von C# macht das Lesen und Schreiben von XML immer einfacher. Verwandte Aufsätze zur C#-Verarbeitung 3. Verwenden Sie Linq to XML, um auf XML zuzugreifen4. Definieren Sie XML-Dokumente mit festem Format über XmlScheme<%@ Page Language="C#" AutoEventWireup="true" %> <script runat="server"> protected override void OnLoad(EventArgs e) { //实际应用,通过读取博客园的RSS生成Html代码显示最新的博客列表 //使用XDocument的Load静态方法载入Xml //玉开技术博客 http://www.php.cn/ var rssXDoc = XDocument.Load("http://www.cnblogs.com/rss"); //使用linq to xml查询前10条新博客 var queryBlogs = (from blog in rssXDoc.Descendants("item") select new { Title = blog.Element("title").Value, Url = blog.Element("link").Value, PostTime = DateTime.Parse(blog.Element("pubDate").Value) }).Take(20); repeaterBlogs.DataSource = queryBlogs; repeaterBlogs.DataBind(); base.OnLoad(e); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Linq to Xml 实例</title> </head> <body> <ol> <asp:Repeater ID="repeaterBlogs" EnableViewState="false" runat="server"> <ItemTemplate> <li><span style="float: right"> <%#Eval("PostTime") %></span><a href="<%#Eval("Url") %>"><%#Eval("Title") %></a></li> </ItemTemplate> </asp:Repeater> </ol> </body> </html>
5.Xml-Serialisierungs- oder Deserialisierungsklasse
6. Durch XML-Knoten suchen
7