加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

LINQ to XML

发布时间:2020-12-16 05:41:45 所属栏目:百科 来源:网络整理
导读:转自:http://www.hubwiz.com/ 概述 LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另

转自:http://www.hubwiz.com/

概述

LINQ to XML是一种启用了LINQ的内存XML编程接口,使用它,可以在.NET Framework编程语言中处理 XML。

  它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XMLDOM不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便。

  LINQ to XML最重要的优势是它与Language-Integrated Query (LINQ)的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。LINQ to XML的查询功能在功能上(尽管不是在语法上)与XPathXQuery具有可比性。

  通过将查询结果用作XElementXAttribute对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。 这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

另外在使用代码LINQ to XML时要用到using System.Xml.Linq;空间,它为我们提供了要处理XML文档的接口与方法。


创建XML元素

LINQ to XML使用XElement类创建元素。如下例子:


using System;

.Xml.Linq.IOnamespace xmltest

{

class Program

static void Main(string[] args)

XElement xml =

new XElement("Persons",

"Person" "Name" "John"),68);">"Age""28" "Tom""27" );

string xmlstr=xml.ToString();

// xml.Save(@"Data.xml"); //保存到文件

Console.WriteLine(xmlstr}

}

}


运行结果为:


<Persons>

<Person>

<Name>John</Name>

<Age>28</Age>

</Person>

Tom27</Person>

</Persons>


创建XML文档

使用XDocument类创建文档。如下例子:



()

var xDoc XDocument"root""dog" //创建元素节点

XText"dog said black is a beautify color"//创建节点值

XAttribute"color""black")),161);">//创建属性节点

"cat""pig""pig is great")));

//xDoc输出xml的encoding是系统默认编码

//默认是缩进格式化的xml,而无须格式化设置

xmlstr xDoc //xDoc.Save(@"data.xml"); //xml文件中会比显示的多一行

Console);

}


<root>

<dog color="black">dog said black is a beautify color</dog>

<cat/>

<pig>pig is great</pig>

</root>




查询XML结点

Linq是从集合中查询对象,在linq to xml中的集合是通过XElement类的Elements(),Elements(string name),以及Descendants、DescendantsAndSelf、Ancestors、AncestorsAndSelf的几个重载方法中获得。获得集合之后,可以通过Attribute(string name)方法获得元素的属性值,可以通过Value属性获得节点的文本值;



xmlString @"<persons>

<person>

<name>John</name>

<age>28</age>

</person>

</persons>";

XElement xe .ParsexmlStringLoadOptions.SetLineInfo //读取元素 读取Name的后面的第一个兄弟元素

xe1 xe.Element"person").Element"name").ElementsAfterSelf().First Consolexe1.Value);//输出 28

//读取父节点

xe2 xe1.Parentxe2.Name

修改XML

修改XML也非常简单,可以通过XElement的Add,Remove,RemoveAll等方法对xml文档进行修改。如下代码:


"<Persons>

<Person>

<Name>John</Name>

<Age>28</Age>

</Person>

</Persons>" LoadOptions//这是添加在最后,如果想添加在最前面可以使用AddFirst,161);">//添加在本节点之前AddBeforSelf,添加在本节点之后AddAfterSelf

xe.Add 26 //删除所有子节点

.RemoveAll TextWriter tw StringWriter();

//第二个参数SaveOptions枚举支持设置格式,缩进,保留无关重要的空白,去除重复命名空间

.Savetw SaveOptions.None

遍历XML

我们用linq to xml 遍历xml文档可以用以下三种方法,如下代码:

)

{

XElement xel (@"

<Root>

<Persons>

<Person>Huang Cong</Person>

<Person>Zhang San</Person>

<Person>Li Si</Person>

<Person>Wang Wu</Person>

</Persons>

</Root>");

Console"Used XNode:");

foreach(XNode n in xel.Nodes())

n}

Console"----------------------------"

Console"Used XElement:"(XElement e .Elements))

e"Used Lambda:" query ().Selectu => u q queryq}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读