Linq to XML-Methode zum Betrieb von XML

高洛峰
Freigeben: 2017-03-04 16:44:55
Original
1770 Leute haben es durchsucht

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();
    }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren


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} &#39;s color is {1},{0} said {2}",item.TypeName,item.Color??"Unknown",item.Saying??"nothing");
        }

        Console.Read();
    }
}
Nach dem Login kopieren


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 zuzugreifen

4. 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>
Nach dem Login kopieren

5.Xml-Serialisierungs- oder Deserialisierungsklasse

6. Durch XML-Knoten suchen

7

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!