c#

如何在C#中操作XML数据

小樊
82
2024-10-14 13:14:02
栏目: 编程语言

在C#中操作XML数据,你可以使用.NET框架自带的System.Xml命名空间。下面是一些基本的操作XML数据的示例:

  1. 读取XML数据

假设你有一个名为"sample.xml"的文件,其内容如下:

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

你可以使用以下代码来读取这个文件:

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. 创建XML数据

你可以使用XmlDocument类来创建新的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);

这段代码会创建一个新的XML文档,其中包含一个名为"student"的元素,该元素具有"id"、"name"和"age"子元素。

  1. 修改XML数据

你可以使用XmlDocument类的SelectSingleNode和SelectNodes方法来查找和修改XML元素:

// 查找第一个名为"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();
    }
}

这段代码会查找第一个名为"name"的元素,并将其值更改为"Jane Doe"。然后,它会查找所有名为"age"的元素,并将它们的值增加1。

0
看了该问题的人还看了