[C#]Linq To Xml 介绍- 转

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", "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>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>
时间: 2024-10-31 03:50:11

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

LINQ to XML 编程基础

1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XEle

Linq之Linq to XML

目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将word文档另存为xml文件,这也提供了一种通过操作xml,操作word的一种方式)以及数据库中,都可以看到 XML.而linq to xml提供了一种操作xml更便捷的方式. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 Li

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

前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C#项目调用不知道是什么语言写的一个WebService,然后添加服务引用总是失败,通过代理的方式动态调用也总是报错,最后没办法,通过发送原始的WebRequest请求直接得到对方返回的一个xml文件.注意过webservice的wsdl文件的朋友应该知道这个是系统生成的xml文件,有点复杂,研究了半

如何:控制命名空间前缀 (C#) (LINQ to XML)

Visual Studio 2010 本主题介绍在序列化 XML 树时如何控制命名空间前缀. 在很多情况下,不需要控制命名空间前缀. 但是,某些 XML 编程工具需要命名空间前缀的特定控制. 例如,您可能正在操作 XSLT 样式表或 XAML 文档,其中包含引用特定命名空间前缀的嵌入式 XPath 表达式,在这种情况下,一定要使用这些特定前缀对文档进行序列化. 这是控制命名空间前缀的最常见的原因. 需要控制命名空间前缀的另一个常见原因是:您希望用户手动编辑 XML 文档,而且您希望创建方便用户键

LINQ to XML基本操作

Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作. LINQ to XML 三个最重要类:XElement.XAttribute 和 XDocument. 首先我们先介绍这三个类的基本属性和方法,然后再实现Linq to XML的 增删改查. 1.XDocument 构造函数 名称 说明 XElement(XElement) 从其他 XElement 对象初始化 XElement 类的新实例. XElement

C#中的Linq to Xml详解

这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 操作之前,需要引入 程序集和命名空间 System.Xml.Linq;  一.生成Xml 为了能够在结构有一定的组织,笔者建议大家新建一个控制台项目,并且新建一个CreateXml类(以下部分都属于该类中). 并在其中写入以下属性: 代码如下: public static String Path { get { Stri

24.C#LINQ TO XML(十二章12.3)

自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.Linq命名空间.该命名空间下几乎所有类型都以X为前缀;普通DOM API中的Element对应LINQ TO XML中的XElement.列举下都有哪些类型. XName:表示元素和特性的名称 XNamespace:表示XML的命名空间,通常是一个URL XObject:是XNode和XAttrib

XML读写利器XElement(Linq to xml)

年初公司绩效改革,在等最后通知,不知我有没理解错,感觉新版绩效最高会比原先最高拿到的奖金整整少一半... 还好同时也有调工资,加了一点.去年好像是年中整体调过一次,不知公司是一年调两次还是从今年开始改成年初调. 晚上去加班,处理一个数据交换,本想XML和实体直接互相转换,但XML结构太复杂,自动转换不理想,改用手工处理. 原先其它项目是用原始的XmlDocument,感觉不好用,写法也很不美观 网上说还有种XMLTextReader,像DataReader一样,向前只读的,从来没用过 以前有用过

LINQ to XML(1)

LINQ to XML可以两种方式和XML配合使用.第一种方式是作为简化的XML操作API,第二种方式是使用LINQ查询工具.下面我使用的是第二种方式. 主要内容:用LINQ查询语句对XML文件里的数据进行筛选. 此方法优点: 1.我们可以使用单一语句自顶向下创建XML树. 2.我们可以使用包含树的XML文档在内存中创建并操作XML. 3.我们可以不适用Text子节点来创建和操作字符串节点. 4.一个最大的不同(改进)是,在搜索一个XML树时,不需要遍历它.相反只需要查询树并让它返回想要的结果.