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