LINQ to XML
转自:http://www.hubwiz.com/ 概述LINQ to XML是一种启用了LINQ的内存XML编程接口,使用它,可以在.NET Framework编程语言中处理 XML。 它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XML与DOM不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便。 LINQ to XML最重要的优势是它与Language-Integrated Query (LINQ)的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。LINQ to XML的查询功能在功能上(尽管不是在语法上)与XPath和XQuery具有可比性。 通过将查询结果用作XElement和XAttribute对象构造函数的参数,实现了一种功能强大的创建 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} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |