LINQ to XML 类概述

LINQ to XML 旨在使 XML 名称尽可能简单。

   
XAttribute 类 XAttribute 表示一个 XML 属性。
XCData 类 XCData 表示一个 CDATA 文本节点。
XComment 类 XComment 表示一个 XML 注释。
XDeclaration 类 XDeclaration 表示一个 XML 声明。 XML 声明用于声明 XML 版本和文档的编码。 此外,XML 声明还指定 XML 文档是否为独立文档。
XName 类 XName 表示元素 (XElement) 和属性 (XAttribute) 的名称。
XContainer 类 XContainer 是适用于可能具有子节点的所有节点的抽象基类。 下面的类派生自 XContainer 类:

  • XElement
  • XDocument
XElement 类  XElement 表示一个 XML 元素
XDocument 类  XDocument 表示一个 XML 文档。
XDocumentType  XDocumentType 表示一个 XML 文档类型定义 (DTD)。

  XML 名称由于复杂而通常被视为 XML 中的高级主题。 有证据证明,这种复杂性不是由开发人员编程时通常使用的命名空间造成的,而是由命名空间前缀造成的。 使用命名空间前缀可以减少输入 XML 时需要的击键数或使 XML 更具可读性。 但前缀通常只是使用完整 XML 命名空间的快捷方式,在多数情况下并不需要。LINQ to XML 通过将所有前缀解析为其对应的 XML 命名空间来简化 XML 名称。 如果需要,可以通过 GetPrefixOfNamespace 方法可以使用前缀。

  如果有必要,可以控制命名空间前缀。 在某些情况下,如果使用的是其他 XML 系统(如 XSLT 或 XAML),则需要控制命名空间前缀。 例如,如果 XPath 表达式使用 XSLT 样式表中嵌入的命名空间前缀,则将需要确保使用与 XPath 表达式中使用的前缀相匹配的命名空间前缀来序列化 XML 文档。

   
XNamespace 类 XNamespace 表示 XElement 或 XAttribute 的命名空间。 命名空间是 XName 的一个组件。
XNode 类 XNode 是一个抽象类,它表示 XML 树的节点。 
XNodeDocumentOrderComparer 类 XNodeDocumentOrderComparer 提供用于比较节点的文档顺序的功能。
XNodeEqualityComparer 类 XNodeEqualityComparer 提供用于比较节点的值是否相等的功能。
XObject 类 XObject 是 XNode 和 XAttribute 的抽象基类。 它提供批注和事件功能。
XObjectChange 类 XObjectChange 指定对 XObject 引发事件时的事件类型。
   
   
   

 

  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"?>
<!--This is a comment.-->
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
<Book>
<Title>Artifacts of Roman Civilization</Title>
<Author>Moreno, Jordao</Author>
</Book>
<Book>
<Title>Midieval Tools and Implements</Title>
<Author>Gazit, Inbar</Author>
</Book>
</Pubs>
<!--This is another comment.-->

  XElement 类概述

  Element 类是 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", "")
  )
  )
  );

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

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

此示例产生以下输出:

<Root>
<Child></Child>
<Child></Child>
<Element></Element>
<Element></Element>
<Element></Element>
</Root>

[C#]Linq To Xml 介绍- 转的更多相关文章

  1. Linq to Xml读取复杂xml(带命名空间)

    前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C ...

  2. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  3. LINQ to XML 编程基础

    1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocumen ...

  4. C#学习之Linq to Xml

    前言 我相信很多从事.NET开发的,在.NET 3.5之前操作XML会比较麻烦,但是在此之后出现了Linq to Xml,而今天的主人公就是Linq to Xml,废话不多说,直接进入主题. 题外:最 ...

  5. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  6. LINQ TO XML 个人的一些心得1

    最近没事做,刚来到一个新公司.写了一些处理xml的项目  就是把一些xml的数据处理后存储到数据库中.原本还是准备用原来的xml来写的.在群里有个人说,用linq to xml 好了,比较快捷.就看了 ...

  7. Linq之Linq to XML

    目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...

  8. Linq世界走一走(LINQ TO XML)

    前言:Linq to xml是一种使用XML的新方法.从本质上来说,它采用了多种当前使用的XML处理技术,如DOM和XPath,并直接在.NET Framework内将它们组合为一个单一的编程接口.L ...

  9. XML操作:2.LINQ TO XML(http://www.cnblogs.com/AlexLiu/archive/2008/10/27/linq.html)

    LINQ to XML 建立,读取,增,删,改   LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除.LINQ可以使的生成的XML文档在 ...

随机推荐

  1. MyElcipse之问题小结

    运行MyEclipse时,遇到这一错误提示: An internal error occurred during: "Launching chat on MyEclipse Tomcat & ...

  2. Linux学习笔记---【1】

    什么是POSIX? 为何说Linux使用POSIX对于开发有很好的影响? POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在于规范内 ...

  3. 解决ASP.NET MVC3与FusionCharts乱码问题

    程序代码  代码如下 复制代码 <script type="text/javascript">    $(document).ready(function () {   ...

  4. Java中List与Map初始化的一些写法

    Java的在还没有发现新写法之前时,我一直是这么初始化List跟Map: 代码如下 复制代码  //初始化List    List<string> list = new ArrayList ...

  5. 001.android初级篇之ToolBar

    官方的最新support library v7中提供了新的组件ToolBar,用来替代之前的ActionBar,实现更为弹性的设计在 material design 也对之做了名称的定义:App ba ...

  6. Ajax Array Json 示例

    function functionName(){ var list=new Array(); $("td.classA").each(function(){ list.push($ ...

  7. 开始写自己的iOS技术博客了

    2015-09-26 中秋节前夕,开始写自己的iOS开发相关的技术博客,还请广大专业的人士批评指教!欢迎纠错和交流! 在来到北京的第二家公司艾亿新融资本管理的子公司——资配易.由于基本没有加班,也算有 ...

  8. 跟着上一个tcpServer 一起来的

    具体功能就是通过反射为实体类赋值 public class httpParse<T> where T : new()    {        /// <summary>     ...

  9. WCF之并发,吞吐量和限流

    并发 Single重入模式.对于每一个服务实例,同一时刻只能处理一个请求,其他对该实例的请求被排队. PerCall,每一线程会分配一个新的服务实例上.不会有并发性问题.不影响吞吐量. PerSess ...

  10. 使用DbVisualizer 8 连接Oracle数据库

    1. 网上下载一个驱动包ojdbc14.jar,放到oracle目录下:...\DbVisualizer-8.0.1\jdbc\oracle\ojdbc14.jar 2. 打开 DbVisualize ...