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

LINQ to XML 類別架構全覽與 XDocument/XElement 程式設計模型

     編輯:關於.NET

核心類別繼承體系

XObject (抽象基類,提供批註與事件)
├── XNode (抽象,樹節點)
│   ├── XContainer (抽象,可含子節點)
│   │   ├── XElement (XML 元素,核心類別)
│   │   └── XDocument (XML 文件)
│   ├── XText (文字節點)
│   ├── XComment (註解)
│   ├── XProcessingInstruction (處理指令)
│   └── XDocumentType (DTD)
└── XAttribute (屬性,非節點,不屬於樹結構)

關鍵類別說明

類別用途
XElement核心類別,表示 XML 元素,支援建構、查詢、修改、序列化,可直接作為樹根
XDocument表示完整 XML 文件,含宣告、處理指令、註解,僅能有一個根 XElement
XAttribute表示屬性,名稱由 XName 定義
XName / XNamespace簡化 XML 名稱處理:自動解析前綴,預設使用預設命名空間序列化
XDeclarationXML 宣告(版本、編碼、standalone)
XComment / XProcessingInstruction / XDocumentType對應註解、處理指令、DTD
XCDataCDATA 區段

無 XDocument 也能完整操作 XML

大多數情境下,直接使用 XElement 即可:建構樹、新增子樹、修改、儲存。只有需要文件層級資訊(宣告、處理指令、文件層級註解)時才建立 XDocument。

函數式建構 XML 樹

基本建構

XElement contacts = new XElement("Contacts",
    new XElement("Contact",
        new XElement("Name", "Patrick Hines"),
        new XElement("Phone", "206-555-0144", new XAttribute("Type", "Home")),
        new XElement("Phone", "425-555-0145", new XAttribute("Type", "Work")),
        new XElement("Address",
            new XElement("Street1", "123 Main St"),
            new XElement("City", "Mercer Island"),
            new XElement("State", "WA"),
            new XElement("Postal", "68042")
        )
    )
);

程式碼縮進直接反映 XML 階層,極具可讀性。

查詢結果建構樹

XElement srcTree = new XElement("Root",
    new XElement("Element", 1), new XElement("Element", 2),
    new XElement("Element", 3), new XElement("Element", 4), new XElement("Element", 5)
);

XElement xmlTree = new XElement("Root",
    new XElement("Child", 1), new XElement("Child", 2),
    from el in srcTree.Elements() where (int)el > 2 select el
);
// 輸出: Child1, Child2, Element3, Element4, Element5

XDocument 完整建構範例

XDocument d = new XDocument(
    new XComment("This is a comment."),
    new XProcessingInstruction("xml-stylesheet", "href='mystyle.css' title='Compact' type='text/css'"),
    new XElement("Pubs",
        new XElement("Book",
            new XElement("Title", "Artifacts of Roman Civilization"),
            new XElement("Author", "Moreno, Jordao")
        ),
        new XElement("Book",
            new XElement("Title", "Midieval Tools and Implements"),
            new XElement("Author", "Gazit, Inbar")
        )
    ),
    new XComment("This is another comment.")
);
d.Declaration = new XDeclaration("1.0", "utf-8", "true");
d.Save("test.xml");

XElement 互通性

XElement 可與 XmlReader、XmlWriter、XslCompiledTransform 互通:

  • CreateReader() 產生 XmlReader 讀取樹內容。
  • CreateWriter() 產生 XmlWriter 填充樹。
  • ReadFrom(reader) 從 XmlReader 載入。
  • 直接傳遞給 XslCompiledTransform.Transform 執行 XSLT。

命名空間前綴控制

預設自動分配前綴或使用預設命名空間。若需精確控制(如 XSLT/XAML 相容),可使用 GetPrefixOfNamespace 或序列化時指定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved