温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

LINQ to XML是什么

发布时间:2021-12-02 09:43:40 来源:亿速云 阅读:135 作者:iii 栏目:编程语言

本篇内容介绍了“LINQ to XML是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在向大家详细介绍LINQ to XML之前,首先让大家了解下LINQ to Object。

LINQ to Object

MethodInfo[] methods = typeof(string).GetMethods();   var q = from t in methods   where (t.Name.Length > 15)   select t;

LINQ to Object主要是基于.NET框架里的Lambda表达式来实现的,因此上面的代码运行结果等同于下面的代码:

MethodInfo[] methods = typeof(string).GetMethods();   var q = methods   .Where((method) => method.Name.Length > 15)   .Select((name) => name.Name);

LINQ to XML

XElement xelem = XElement.Load(@"example.xml");   // 查询节点名为Item,并返回它们的PartNumber属性值的集合   IEnumerable<string> partNos = from item in xelem.Descendants("Item")   Select (string)item.Attribute("PartNumber");   foreach (string str in partNos)   Console.WriteLine(str);

在.NET3.5中,框架对XML的操作进行了扩展,这个扩展就是LINQ to XML。在名称空间System.Xml.LINQ下。从以上的代码我们可以看到增加了一个新的XElement对象。我们通过XElement.Load方法来装载XML文档,而不是传统的DOM模式XmlDocument.Load。

相比较于W3C的DOM文档结构来说,LINQ to XML为我们提供了一种更方便的创建一个XML文档的方式

XElement contacts =   new XElement("Contacts",   new XElement("Name", "Ice Lee"),   new XElement("Phone", "010-876546",   new XAttribute("Type", "Home")),   new XElement("Phone", "425-23456",   new XAttribute("Type", "Work")),   new XElement("Address",   new XElement("Street", "ZhiXinCun"),   new XElement("City", "Beijin")   )   );   输出结果:   <? Xml version="1.0" encoding="utf-8"?>   <Contacts>   <Name>Ice Lee</Name>   <Phone Type="Home">010-876546</Phone>   <Phone Type="Work">425-23456</Phone>   <Address>   <Street>ZhiXinCun</Street>   <City>Beijing</City>   </Address>   </Contacts>

LINQ to XML提供了为丰富并且简洁的类来实现对XML的操作。相对于种类繁多的DOM模型的XML类库而言,LINQ的类使我们的学习曲线变得平滑并且还能达到相同的效果。LINQ to XML解决了DOM模型中的几个比较不方便的问题,如修改节点名字的问题;同时也抛弃了一些看起来很强大但是很不常用的东西,如实体和实体引用。这样使得LINQ to XML的操作速度更快并且更方便。以下的几个例子将展示给大家LINQ to XML如何完成节点名称修改,增加和删除的效果。

首先,我们看一下添加一个节点到XML中是这么样实现的:

XElement xelem = XElement.Load(@"example.xml");   XElement newnewXelem = new XElement("NewNode", "This is new node");   xelem.Add(newXelem);

相当的简单,只要先生成一个XElement对象然后把它Add到当前节点对象就可以了。进一步我们仔细查看一下XElement可以添加节点的方法。可以看到一共有Add, AddAfterSelf, AddAnnotation, AddBeforeSelf, AddFirst这五个方法。在默认情况下,Add的操作是将新节点作为被插入节点的***一个孩子节点插入的,而AddFirst正好相反。AddAfterSelf和AddBeforeSelf则是将节点作为兄弟节点插入的,这里要注意的是调用这两个方法的时候不能以根节点作为被插入节点,因为XML文档规定只能有一个根节点。***,我们来看一下AddAnnotation这个方法。

AddAnnotation是为一个节点添加一个相关的评注的类对象。这个类对象可以用户自己定义,所以通过这个方法我们可以扩展XML文档对象的功能,例如根据节点来获取类对象的功能。下面是一段引用自msdn的代码:

public class MyAnnotation   {   private string tag;   public string Tag { get { return tag; } set { tag = value; } }   public MyAnnotation(string tag)   {   this.tag = tag;   }   }   … …   MyAnnotation ma = new MyAnnotation("T1");   XElement root = new XElement("Root", "content");   root.AddAnnotation(ma);   MyAnnotation ma2 = (MyAnnotation)root.Annotation<MyAnnotation>();

“LINQ to XML是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI