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

.NET XmlDocument 操作 XML 完整速查指南

     編輯:ASP.NET 基礎

System.Xml.XmlDocument 是 .NET 傳統 DOM 模式 XML 操作類別,適合載入整份文件進行查詢、修改、儲存。本文整理常用操作模式與程式碼片段,方便快速參考。

命名空間與載入

using System.Xml;

XmlDocument xml = new XmlDocument();
// 從檔案載入
xml.Load(Server.MapPath("~/App_Data/bookstore.xml"));
// 從字串載入
xml.LoadXml("<root><item id='1'>Test</item></root>");

節點查詢

操作程式碼
取得根節點XmlNode root = xml.DocumentElement; 或 xml.SelectSingleNode("/root")
取得所有直接子節點XmlNodeList children = root.ChildNodes;
判斷是否有子節點bool has = root.HasChildNodes;
XPath 查詢多個同名節點XmlNodeList list = xml.SelectNodes("/root/items/item");
XPath 查詢單一節點XmlNode node = xml.SelectSingleNode("/root/items/item[@id='1']");

建立與新增節點

// 建立元素節點
XmlElement newItem = xml.CreateElement("item");
// 設定屬性
newItem.SetAttribute("id", "2");
// 設定內文
newItem.InnerText = "New Content";
// 或建立子元素
XmlElement sub = xml.CreateElement("detail");
sub.InnerText = "Detail text";
newItem.AppendChild(sub);

// 加入到父節點
root.AppendChild(newItem);
// 或插入到特定節點之前
root.InsertBefore(newItem, root.ChildNodes[1]);

修改與刪除

// 修改屬性
node.Attributes["id"].Value = "99";
// 修改內文
node.InnerText = "Updated";
// 修改整段 XML (含子節點)
node.InnerXml = "<sub>New</sub>";

// 刪除屬性
node.Attributes.RemoveNamedItem("id");
// 刪除節點
root.RemoveChild(node);

儲存變更

string path = Server.MapPath("~/App_Data/bookstore.xml");
xml.Save(path);
// 或
xml.Save(HttpContext.Current.Server.MapPath("~/App_Data/bookstore.xml"));

完整範例:新增書籍資料

public void AddBook(string title, string author, decimal price)
{
    XmlDocument doc = new XmlDocument();
    string path = Server.MapPath("~/App_Data/books.xml");
    doc.Load(path);

    XmlElement book = doc.CreateElement("book");
    book.SetAttribute("isbn", Guid.NewGuid().ToString("N").Substring(0, 13));

    XmlElement titleEl = doc.CreateElement("title");
    titleEl.InnerText = title;
    book.AppendChild(titleEl);

    XmlElement authorEl = doc.CreateElement("author");
    authorEl.InnerText = author;
    book.AppendChild(authorEl);

    XmlElement priceEl = doc.CreateElement("price");
    priceEl.InnerText = price.ToString("F2");
    book.AppendChild(priceEl);

    doc.DocumentElement.AppendChild(book);
    doc.Save(path);
}

XmlDocument vs XDocument (LINQ to XML)

特性XmlDocument (DOM)XDocument (LINQ to XML)
命名空間System.XmlSystem.Xml.Linq
查詢語法XPathLINQ / XPath
建構 XML冗長 (CreateElement/AppendChild)函數式建構 (new XElement(...))
效能 (大文件)載入整樹記憶體同樣載入整樹,但查詢更優雅
適用場景舊專案維護、需 XPath 相容新專案首選、現代語法

建議:新專案優先使用 XDocument,程式碼更簡潔、型別安全、支援 LINQ 查詢。

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