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. AJAX之JSON

    AJAX=Asynchronous JavaScript and XML(异步的JavaScript 和XML). AJAX不是新的编程语言,而是一种是用现代标准的新方法,用于创建快速动态网页的技术. ...

  2. WPF button 如何区分click和doubleclick

    WPF button 同时处理两个事件时候会先触发click事件,触发doubleclick事件  ,那如何区分呢,可以这样设置: private static DispatcherTimer myC ...

  3. 微软的COM中GUID和UUID、CLSID、IID

    摘自:http://blog.csdn.net/zhongguoren666/article/details/6711396 当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全 ...

  4. html有序列表和无序列表

    css控制UL LI 的样式详解(推荐) CSS: 代码如下: #menu ul {list-style:none;margin:0px;} #menu ul li {float:left;} 代码如 ...

  5. c#实现数据集合转换为csv文本

    需求 1.将一个数据集合导出到一个csv文件中,集合类型可以视为 List<T>,T为任意类型,T包含多个属性,可指定部分属性进行导出 2.软件中有多种不同类型的数据类型需要进行导出 需求 ...

  6. 字符集转换: Unicode - Ansi

    字符集转换: Unicode - Ansi string UnicodeToAnsi ( const wstring& wstrSrc ) { /*!< 分配目标空间, 一个16位Uni ...

  7. javascript笔记——jquery.each中使用continue和break的方式

    jQuery.each中continue的方式是 return  true  break 的方式是return false

  8. 8款超酷的HTML5 3D图片动画源码

    1.HTML5移动端图片左右切换动画 今天要给大家分享一款很不错的图片左右切换焦点图动画,并且支持移动端触摸滑动.功能上,这款HTML5图片播放器支持鼠标滑动.手机端触摸滑动以及自动播放.外观上,这款 ...

  9. 绝对震撼 7款HTML5动画应用及源码

    1.HTML5 Canvas模拟衣服撕扯动画 超级逼真 今天又要来推荐一款HTML5 Canvas动画,是一个模拟衣服撕扯动画,效果非常逼真.刚开始衣服挂在绳子上,用鼠标拖拽衣服即可让衣服摆动起来,当 ...

  10. 杭电ACM2084--数塔

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 这种DP是相对容易的,一个二维数组,遍历一次,计算结果,存在指定位置. 本题关键代码是: a[i-1][j ...