C#:
处理XML

如何操作:

using System;
using System.Xml;
using System.Xml.Linq;

class Program
{
     static void Main()
     {
        var xmlString = @"<bookstore>
                            <book>
                              <title lang=""en"">Head First C#</title>
                              <price>39.99</price>
                            </book>
                          </bookstore>";

        // 将字符串解析为XDocument对象
        XDocument doc = XDocument.Parse(xmlString);

        // 添加一本新书
        doc.Element("bookstore").Add(
            new XElement("book",
                new XElement("title", "Learning XML", new XAttribute("lang", "en")),
                new XElement("price", 29.99)
            )
        );

        // 在控制台上写出XML
        Console.WriteLine(doc);

        // 载入文档
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlString);

        // 检索所有价格
        XmlNodeList prices = xmlDoc.GetElementsByTagName("price");
        foreach (XmlNode price in prices)
        {
            Console.WriteLine(price.InnerText);
        }
     }
}

// 示例输出:
// <bookstore>
//  <book>
//    <title lang="en">Head First C#</title>
//    <price>39.99</price>
//  </book>
//  <book>
//    <title lang="en">Learning XML</title>
//    <price>29.99</price>
//  </book>
// </bookstore>
// 39.99
// 29.99

深入探索

XML自90年代末就存在了,使其在技术年龄中成为了一位老祖宗。它被设计用于数据可移植性和易于人类阅读。像JSON这样的替代方案现在尤其在Web上下文中对其构成了挑战,因为它更轻便且对许多人来说更简单。但在许多遗留系统和某些通信协议中,XML仍然占据一席之地。使用XML,你获得了一个用于验证结构的模式(schema)和避免标签冲突的命名空间——这些功能展示了它作为企业准备就绪技术的成熟度。

在C#中,System.Xml.LinqSystem.Xml 命名空间是操作XML的两大利器。LINQ to XML(XDocument, XElement)更加现代和优雅——你已经在示例中看到它的魔力了。XmlDocument为你提供了DOM(文档对象模型)方法——有点老派,但有些人誓言其强大。

另见