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

C# 操作 XML 完整實作:節點新增、修改與儲存

     編輯:C# 入門

範例 XML 檔案 (bookstore.xml)

<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberons Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
</bookstore>

1. 新增 <book> 節點至 <bookstore>

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("bookstore.xml");

XmlNode root = xmlDoc.SelectSingleNode("bookstore"); // 找到根節點

// 建立 book 元素與屬性
XmlElement xe1 = xmlDoc.CreateElement("book");
xe1.SetAttribute("genre", "李贊紅");
xe1.SetAttribute("ISBN", "2-3631-4");

// 建立子節點
XmlElement xesub1 = xmlDoc.CreateElement("title");
xesub1.InnerText = "CS從入門到精通";
xe1.AppendChild(xesub1);

XmlElement xesub2 = xmlDoc.CreateElement("author");
xesub2.InnerText = "候捷";
xe1.AppendChild(xesub2);

XmlElement xesub3 = xmlDoc.CreateElement("price");
xesub3.InnerText = "58.3";
xe1.AppendChild(xesub3);

// 加入根節點並儲存
root.AppendChild(xe1);
xmlDoc.Save("bookstore.xml");

結果

<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">...</book>
  <book genre="李贊紅" ISBN="2-3631-4">
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
</bookstore>

2. 修改節點:genre="李贊紅" 的 book

  • 將 genre 改為 "update李贊紅"
  • 將子節點 <author> 文字改為 "亞勝"
XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;

foreach (XmlNode xn in nodeList)
{
    XmlElement xe = (XmlElement)xn;
    if (xe.GetAttribute("genre") == "李贊紅")
    {
        // 修改屬性
        xe.SetAttribute("genre", "update李贊紅");

        // 遍歷子節點找 author
        XmlNodeList nls = xe.ChildNodes;
        foreach (XmlNode xn1 in nls)
        {
            XmlElement xe2 = (XmlElement)xn1;
            if (xe2.Name == "author")
            {
                xe2.InnerText = "亞勝";
                break;
            }
        }
        break;
    }
}
xmlDoc.Save("bookstore.xml");

關鍵 API 對照

操作方法/屬性
載入 XMLXmlDocument.Load(path)
查詢單一節點SelectSingleNode(xpath)
查詢多個節點SelectNodes(xpath) 或 ChildNodes
建立元素CreateElement(name)
設定屬性SetAttribute(name, value)
設定文字內容InnerText
新增子節點AppendChild(node)
儲存Save(path)

進階建議

  • 使用 XPath 語法精確定位://book[@genre='李贊紅']
  • 大量操作考慮 XmlWriter 流式寫入效能更好
  • Schema 驗證可用 XmlReaderSettings.Schemas
  • LINQ to XML (System.Xml.Linq) 提供更現代化 API
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved