您的位置:知识库 » 数据库

Linq To Xml学习 - 2.LINQ to XML 编程概述

作者: Q.Lee.lulu  来源: 博客园  发布时间: 2008-09-23 17:04  阅读: 16990 次  推荐: 0   原文链接   [收藏]  
[1] Linq To Xml学习 - 2.LINQ to XML 编程概述
[2] Linq To Xml学习 - 2.LINQ to XML 编程概述

XDocument 类概述

XDocument 类包含有效的 XML 文档所需的信息。 其中包括 XML 声明、处理指令和注释。

请注意,如果需要 XDocument 类提供的特定功能,您只需创建 XDocument 对象。 在很多情况下,可以直接使用 XElement。 直接使用 XElement 是一种比较简单的编程模型。

XDocument 是从 XContainer 派生的。 因此,它可以包含子节点。 但是,XDocument 对象只能有一个子 XElement 节点。 这反映了 XML 标准,即在 XML 文档中只能有一个根元素。

在没有 Xdocument 的情况下使用 XElement

如上所述,XElement 类是 LINQ to XML 编程接口中的主类。 在很多情况下,您的应用程序不需要您创建文档。 通过使用 XElement 类,可以创建 XML 树,向它添加其他 XML 树,修改 XML 树并进行保存。

若要构造一个 XDocument,可使用函数构造,正如您构造 XElement 对象那样。

下面的代码创建一个 XDocument 对象及其关联的包含对象。

XDocument d = new XDocument(
    new XComment("This is a comment."),
    new XProcessingInstruction("xml-stylesheet",
        "href='mystyle.css' title='Compact' type='text/css'"),
    new XElement("Pubs",
        new XElement("Book",
            new XElement("Title", "Artifacts of Roman Civilization"),
            new XElement("Author", "Moreno, Jordao")
        ),
        new XElement("Book",
            new XElement("Title", "Midieval Tools and Implements"),
            new XElement("Author", "Gazit, Inbar")
        )
    ),
    new XComment("This is another comment.")
);
d.Declaration = new XDeclaration("1.0", "utf-8", "true");
Console.WriteLine(d);

d.Save("test.xml");

当您检查文件 test.xml 时, 会得到以下输出:

xml version="1.0" encoding="utf-8"?>

xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
  <Book>
    <Title>Artifacts of Roman CivilizationTitle>
    <Author>Moreno, JordaoAuthor>
  Book>
  <Book>
    <Title>Midieval Tools and ImplementsTitle>
    <Author>Gazit, InbarAuthor>
  Book>
Pubs>

 

XElement 类概述

XElement 类是 LINQ to XML 中的基础类之一。 它表示一个 XML 元素。 可以使用该类创建元素;更改元素内容;添加、更改或删除子元素;向元素中添加属性;或以文本格式序列化元素内容。 还可以与 System.Xml 中的其他类(例如 XmlReader、XmlWriter 和 XslCompiledTransform)进行互操作.

XElement 类提供的功能。

构造 XML 树

可以使用各种方式构造 XML 树,包括以下方式:

  • 可以在代码中构造 XML 树。

  • 可以从包括 TextReader、文本文件或 Web 地址 (URL) 在内的各种源解析 XML。

  • 可以使用 XmlReader 来填充树。 有关更多信息,请参见 ReadFrom。

  • 如果您有一个可以将内容写入 XmlWriter 的模块,则可以使用 CreateWriter 方法来创建编写器,将该编写器传递到该模块,然后使用写入 XmlWriter 的内容来填充 XML 树。

但是,创建 XML 树的最常见的方法如下:

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"), 
            new XElement("Phone", "206-555-0144"),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );

另一个创建 XML 树的十分常用的方法是使用 LINQ 查询的结果来填充 XML 树,如下面的示例所示:

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);

此示例产生以下输出:

<Root>
  <Child>1Child>
  <Child>2Child>
  <Element>3Element>
  <Element>4Element>
  <Element>5Element>
<Root>
[第1页][第2页]
0
0
 
标签:linq xml

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻