C# 处理XML片段
与一些XML DOM不同,LINQ to XML处理XML片段(部分或不完整的XML文档)的方式与处理完整的XML文档几乎完全相同。在处理片段时,只需要将XElement(而不是XDocument)当作顶级XML对象。
下面的示例会加载、保存和处理XML元素及其子节点,这与处理XML文档一样。
试一试 处理 XML 片段:BeginningCSharp7—22_2—XMLFragments
按照下面的步骤在Visual Studio 2017中创建示例:
⑴在C:\BegirmingCSharp7\Chapter22目录中修改上一个示例或者创建一个新的控制台应用程序 BeginningCSharp7 一 22—2 一 XMLFragments。
(2)打开主源文件Program.cs。
(3)在Program.cs幵头处添加对System.XmLLinq名称空间的引用,如下所示:
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Text;
using static System,Console;
如果正在修改上一个示例,则己经引用了这个名称空间。
(4)把上一个示例中的XML元素(不包含,XML文档构造函数)添加到Program.cs的Main()方法中:
static void Main(string[] args)
{
XElement xcust =
new XElement("customers",
new XElement("customer",
new XAttribute("ID", "A"),
new XAttribute("City", "New York"},
new XAttribute("Region", "North America")
new XElement("order",
new XAttribute("Item", "Widget")
new XAttribute("Price", 100)
),
new XElement ("order",
new XAttribute("Item", "Tire"),
new XAttribute("Price", 200)
)
),
new XElement(ncustomer",
new XAttribute("ID", "B"),
new XAttribute("City", "Mumbai"),
new X&ttribute("Region", "Asia"),
new XEloment ("order",
new XAttribute("Item", "Oven"),
new XAttribute("Price", 501)
)
)
)
;
(5)在上一步添加了XML元素构造函数代码后,添加下面的代码,以便保存、加载和显示XML元素:
string xmlFileName =
@"c:\BeginningCSharp7\Chapter22\BeginningCSharp7_22_2_XMLFragments\fragment.xml";
xcust.Save(xmlFileName);
XElement xcust2 = XElement.Load(xmlFileName);
WriteLine("Contents of xcust:");
WriteLine(xcust);
Write("Program finished, press Enter/Return to continue:");
ReadLine();
(6)编译并执行程序(按下F5键即可启动调试),控制台窗口中的输出结果如下所示:
Contents of XElement xcust2:
<customers>
<customer ID="A" City="New York" Region="North America"〉
<order Item="Wiciget" Price="100" />
<order Item="Tire" Price="200" />
</customer>
<customer ID="B" City="Mumbai" Region="Asia">
<order Item="0ven" Price="501" />
</customer>
</customers>
Program finished, press Enter/Return to continue:
按下Enter/Retum键,以便结束程序,关闭控制台屏幕。如果使用Ctrl+F5组合键(启动时不使用调试功能),就需要按下Enter/Retum键两次。
示例说明
XElement和XDocument都继承自LINQ to XML类XContainer,它实现了 一个可以包含其他XML节点的XML节点。这两个类都实现了Iuad()和Save()方法,因此,可在LINQ to XML的XDocument上执行的大多数操作都可以在XElement实例及其子元素上执行。
这里只创建了一个XElement实例,它的结构与前面示例中的XDocument相同,但不包含XDocument。这个程序的所有操作处理的都是XElement片段。
XElement还支持LoadO和Parse()方法,可以分别从文件和字符串中加载XML。
点击加载更多评论>>