首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

LINQ to XML 讀寫 XML 完整範例解析

     編輯:ASP.NET 基礎

前言

System.Xml.Linq 命名空間提供 XDocument、XElement、XAttribute、XText 等類別,讓 XML 操作比傳統 XmlDocument 更直觀、更符合 LINQ 風格。

一、建立 XML 文件

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")
    )
);
// 輸出預設縮排、預設編碼 (繁體中文系統為 Big5/UTF-8)
xDoc.Save(Console.Out);

輸出結果:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <dog color="black">dog said black is a beautify color</dog>
  <cat />
  <pig>pig is great</pig>
</root>

二、讀取與查詢 XML

var query = from item in xDoc.Element("root").Elements()
            select new {
                TypeName = item.Name.LocalName,
                Saying   = item.Value,
                Color    = item.Attribute("color")?.Value ?? "Unknown"
            };

foreach (var item in query) {
    Console.WriteLine($"{item.TypeName} 's color is {item.Color}, {item.TypeName} said {item.Saying}");
}

三、實務應用:解析 RSS Feed 顯示最新 10 篇文章

<%@ Page Language="C#" %>
<script runat="server">
    protected override void OnLoad(EventArgs e) {
        var rss = XDocument.Load("https://www.cnblogs.com/rss"); // 範例 RSS
        var blogs = (from item in rss.Descendants("item")
                     select new {
                         Title = item.Element("title")?.Value,
                         Url   = item.Element("link")?.Value,
                         Date  = DateTime.Parse(item.Element("pubDate")?.Value)
                     }).Take(10);
        repeaterBlogs.DataSource = blogs;
        repeaterBlogs.DataBind();
        base.OnLoad(e);
    }
</script>
<asp:Repeater ID="repeaterBlogs" runat="server">
    <ItemTemplate>
        <li><a href="<%# Eval("Url") %>"><%# Eval("Title") %></a>
        <span><%# Eval("Date", "{0:yyyy-MM-dd}") %></span></li>
    </ItemTemplate>
</asp:Repeater>

關鍵類別對照表

類別用途
XDocument代表完整 XML 文件,支援 Load/Save
XElement代表 XML 元素,可巢狀建構樹狀結構
XAttribute代表屬性,附掛於 XElement
XText代表文字節點內容

常用查詢方法

  • Elements() / Elements(name):取得直接子元素
  • Descendants() / Descendants(name):遞迴取得所有後代元素
  • Attribute(name):取得指定屬性
  • Value:取得元素文字內容 (含子元素文字)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved