位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 处理XML片段

提问人:刘团圆发布时间:2020-12-10

    与一些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。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部