用 XmlDocument 类修改和保存 XML
此示例演示如何使用
XmlDocument 类更新和保存 XML。
要求
下表概括了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:- Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
- Microsoft Visual Studio .NET
- XML 术语
- 创建和读取 XML 文件
- 文档对象模型 (DOM)
如何使用 XmlDocument 类保存 XML
- 在 Visual Studio .NET 中新建 Visual Basic 或 C# 控制台应用程序。
- 确保该项目引用 System.Xml 名称空间。
- 在 Xml 名称空间上使用 Imports 语句,这样,以后就不需要在代码中限定 XmlTextReader 声明了。Imports 语句必须位于任何其他声明之前。 Visual Basic .NET 代码
Imports System.Xml
C# 代码using System.Xml;
- 新建 XmlDocument 类,然后使用 Load 方法加载它。
XmlDocument 类表示 XML 文档并且使用 Load 方法从文件、流或 XmlReader 加载文档。
Visual Basic .NET 代码Dim myXmlDocument as XmlDocument = new XmlDocument() myXmlDocument.Load ("books.xml"))
C# 代码XmlDocument myXmlDocument = new XmlDocument(); myXmlDocument.Load ("books.xml");
请注意,尽管在此处使用了 Books.xml 文件,但是您可创建自己的 Books.xml 文件。Books.xml 示例文件还包括在 Visual Studio .NET 和 .NET 框架软件开发工具包 (SDK) 中。 - XmlNode 对象提供了操作节点的方法和属性。 使用 XmlDocument 的 DocumentElement 属性返回的 XmlNode 对象操作 XML 节点。 Visual Basic .NET 代码
Dim node as XmlNode node = myXmlDocument.DocumentElement
C# 代码XmlNode node; node = myXmlDocument.DocumentElement;
- 迭代文档元素的子元素,并查找所有“price”节点。 对 Node 对象的 ChildNodes 属性使用 For Each 循环结构,查找所有 Name 属性等于“price”的节点。 将书籍的价格加倍。 Visual Basic .NET 代码
Dim node2 As XmlNode 'Used for internal loop. Dim nodePriceText As XmlNode For Each node In node.ChildNodes 'Find the price child node. For Each node2 In node.ChildNodes If node2.Name = "price" Then ' nodePriceText = node2.InnerText Dim price As Decimal price = System.Decimal.Parse(node2.InnerText) ' Double the price. Dim newprice As String newprice = CType(price * 2, Decimal).ToString("#.00") Console.WriteLine("Old Price = " & node2.InnerText & Strings.Chr(9) & "New price = " & newprice) node2.InnerText = newprice End If Next Next
C# 代码foreach(XmlNode node1 in node.ChildNodes) foreach (XmlNode node2 in node1.ChildNodes) if (node2.Name == "price") { Decimal price = Decimal.Parse(node2.InnerText); // Increase all the book prices by 20% String newprice = ((Decimal)price*(new Decimal(1.20))).ToString("#.00"); Console.WriteLine("Old Price = " + node2.InnerText + "/tNew price = " + newprice); node2.InnerText = newprice; }
- 使用 XmlDocument 类的 Save 方法将修改后的 XML 保存到名为 InflatedPriceBooks.xml 的新文件中。
可以使用 Save 方法将 XML 数据保存到文件、流和 XmlWriters 中。 Visual Basic .NET 代码myXmlDocument.Save("InflatedPriceBooks.xml"))
C# 代码myXmlDocument.Save("InflatedPriceBooks.xml");
- 生成并运行您的项目