如何在C#中操作XML數(shù)據(jù)

c#
小樊
82
2024-10-14 13:14:02

在C#中操作XML數(shù)據(jù),你可以使用.NET框架自帶的System.Xml命名空間。下面是一些基本的操作XML數(shù)據(jù)的示例:

  1. 讀取XML數(shù)據(jù)

假設(shè)你有一個(gè)名為"sample.xml"的文件,其內(nèi)容如下:

<students>
    <student id="1">
        <name>John Doe</name>
        <age>20</age>
    </student>
    <student id="2">
        <name>Jane Smith</name>
        <age>22</age>
    </student>
</students>

你可以使用以下代碼來(lái)讀取這個(gè)文件:

using System.Xml;

XmlDocument doc = new XmlDocument();
doc.Load("sample.xml");

XmlNode root = doc.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
    if (node.NodeType == XmlNodeType.Element && node.Name == "student")
    {
        string id = node.Attributes["id"].Value;
        string name = node.SelectSingleNode("name").InnerText;
        int age = int.Parse(node.SelectSingleNode("age").InnerText);

        Console.WriteLine($"Student ID: {id}, Name: {name}, Age: {age}");
    }
}
  1. 創(chuàng)建XML數(shù)據(jù)

你可以使用XmlDocument類來(lái)創(chuàng)建新的XML文檔:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<students></students>");

XmlNode root = doc.DocumentElement;

XmlNode studentNode = doc.CreateNode(XmlNodeType.Element, "student", null);
XmlAttribute idAttr = doc.CreateAttribute("id");
idAttr.Value = "1";
studentNode.Attributes.Append(idAttr);

XmlNode nameNode = doc.CreateNode(XmlNodeType.Element, "name", null);
nameNode.InnerText = "John Doe";
studentNode.AppendChild(nameNode);

XmlNode ageNode = doc.CreateNode(XmlNodeType.Element, "age", null);
ageNode.InnerText = "20";
studentNode.AppendChild(ageNode);

root.AppendChild(studentNode);

這段代碼會(huì)創(chuàng)建一個(gè)新的XML文檔,其中包含一個(gè)名為"student"的元素,該元素具有"id"、"name"和"age"子元素。

  1. 修改XML數(shù)據(jù)

你可以使用XmlDocument類的SelectSingleNode和SelectNodes方法來(lái)查找和修改XML元素:

// 查找第一個(gè)名為"name"的元素
XmlNode nameNode = doc.SelectSingleNode("/students/student/name");
if (nameNode != null)
{
    nameNode.InnerText = "Jane Doe";
}

// 查找所有名為"age"的元素,并將它們的值增加1
XmlNodeList ageNodes = doc.SelectNodes("/students/student/age");
if (ageNodes != null)
{
    foreach (XmlNode ageNode in ageNodes)
    {
        int age = int.Parse(ageNode.InnerText);
        ageNode.InnerText = (age + 1).ToString();
    }
}

這段代碼會(huì)查找第一個(gè)名為"name"的元素,并將其值更改為"Jane Doe"。然后,它會(huì)查找所有名為"age"的元素,并將它們的值增加1。

0