📜  c# xml - C# (1)

📅  最后修改于: 2023-12-03 15:13:49.957000             🧑  作者: Mango

C# XML

C# XML 是一种处理 XML 数据的编程语言,它提供了一系列的类和方法用于读取、生成和修改 XML 数据。在应用程序中使用 XML 可以方便地存储和传输数据。

XML 的基本概念

XML(Extensible Markup Language,可扩展标记语言)是一种用于描述数据的标记语言。XML 使用标记来定义数据元素,也称为节点(node),并使用属性描述节点的特征。

举个例子:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="Children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="Web">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

上面的 XML 代码描述了一个书店的信息,包括每本书的标题、作者、年份和价格。在代码中,<?xml version="1.0" encoding="UTF-8"?> 表示这是 XML 文件,并且使用了 UTF-8 编码。

C# XML 的基本操作

C# XML 提供了一系列的类和方法用于读取、生成和修改 XML 数据。常用的类有 XmlDocumentXmlReaderXmlWriter

读取 XML

要读取 XML,可以使用 XmlDocument 类。以下是读取上面示例中的 XML 数据的代码:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("books.xml");
XmlNodeList bookNodes = xmlDoc.GetElementsByTagName("book");
foreach(XmlNode bookNode in bookNodes) {
    string title = bookNode.SelectSingleNode("title").InnerText;
    string author = bookNode.SelectSingleNode("author").InnerText;
    string year = bookNode.SelectSingleNode("year").InnerText;
    string price = bookNode.SelectSingleNode("price").InnerText;
    Console.WriteLine("Title: {0}", title);
    Console.WriteLine("Author: {0}", author);
    Console.WriteLine("Year: {0}", year);
    Console.WriteLine("Price: {0}", price);
}

上述代码首先创建了一个 XmlDocument 对象,加载了 XML 文件。然后使用 GetElementsByTagName 方法获取所有 book 节点,并使用 foreach 循环遍历每本书的信息。

使用 SelectSingleNode 方法可以获取指定节点的信息,如上述代码中的 titleauthoryearprice

生成 XML

要生成 XML,可以使用 XmlWriter 类。以下是生成一个简单的 XML 数据的代码:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using(XmlWriter writer = XmlWriter.Create("test.xml", settings)) {
    writer.WriteStartElement("root");
    writer.WriteStartElement("person");
    writer.WriteAttributeString("id", "1");
    writer.WriteElementString("name", "John");
    writer.WriteElementString("age", "35");
    writer.WriteEndElement();
    writer.WriteEndElement();
}

以上代码创建了一个 XmlWriter 对象,通过 XmlWriter.Create 方法指定输出文件名和输出格式。然后使用各种方法向 XML 中写入数据。

修改 XML

要修改 XML,可以使用 XmlDocument 类。以下是修改上面示例中的 XML 数据的代码:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("books.xml");
XmlNodeList bookNodes = xmlDoc.GetElementsByTagName("book");
foreach(XmlNode bookNode in bookNodes) {
    if((bookNode.SelectSingleNode("title").InnerText == "Learning XML") &&
       (bookNode.SelectSingleNode("price").InnerText == "39.95")) {
        bookNode.SelectSingleNode("price").InnerText = "29.95";
    }
}
xmlDoc.Save("new_books.xml");

上述代码首先加载 XML 文件,并使用 GetElementsByTagName 方法获取所有 book 节点。然后使用 foreach 循环遍历每本书,如果找到了 "Learning XML" 这本书,并且价格为 39.95 美元,就将价格修改为 29.95 美元。

最后使用 Save 方法保存修改后的 XML 数据。

总结

C# XML 提供了一系列的类和方法用于读取、生成和修改 XML 数据。要学习更多关于 C# XML 的知识,请参考官方文档。