使用 linq to xml 操作xml文件

本文介绍了如何使用LINQ to XML进行XML文件操作,对比xmlDocument类,LINQ to XML提供了更高的开发效率和简洁的语法。通过引入命名空间,我们可以利用XElement类来加载、操作和保存XML文件,包括获取元素、属性集合以及遍历IEnumerable集合中的数据。

   今天 使用到了linq操作xml文件,在这里分享一下。

  整体 感觉 使用linq to xml 操作xml文件比起使用xmlDocument类而言,开发效率上提高了不少,另外在语法上也精简了很多。

   操作之前,需要引入 命名空间

using System.Xml.Linq;
  xml数据结构无非就是节点(Node),再者是节点中的属性(Attribute)。

  首先介绍 几个常用类:

    XElement  : 它就表示一个xml元素,用来加载xml文件,操作xml节点,获取节点下的元素集合(Elements)等。

    1.加载Xml文件 

string filePath = @"D:\a.xml"
private XElement xmlDoc = XElement.Load(filePath);
    2.获取某个元素下的node集合

IEnumerable<XElement> elementCollection = xmlDoc.Elements("Group");
Elements 是一个实现IEnumerable接口的集合,集合中的类型也为XElement类型,所以该属性返回的集合为 IEnumerable<XElement>。 这里获取的所有节点名为Group的所有元素。

    3.获取某个元素下的Attribute集合

       一般的xml文件都会包括节点属性,那么获取节点属性也有对应的方法。

IEnumerable<XAttribute> attributeCollection=elementCollection.Elements("Role").Attributes("Name");
       该集合中的类型为XAttribute,表示元素的属性。

    4.获取IEnumerable集合中的数据

var  query = from p in  elementCollection select p; 
    5.同时获取集合中的元素和元素属性

    

var  query = from q in elementCollection select new {
p.Element("Name").Value,   // 获取元素值
p.Attribute("Tag").Value   // 获取属性值
};
     6.将xml字符串转成xml文件。

XElement xml = XElement.Parse("xml字符串");
     7.新增元素,修改,保存

 XElement carElement = new XElement("Car",
                             new XAttribute("Id", entity.Id),
                             new XAttribute("Width", entity.Width),
                             new XAttribute("Height", entity.Height),
                             new XAttribute("IsSelected", entity.IsSelected.ToString()),
                             new XAttribute("CollectionName", entity.CollectionName),
                             new XAttribute("GroupName", entity.GroupName),
                             new XElement("Name", entity.Name),
                             new XElement("IP", entity.IP),
                             new XElement("X", entity.X),
                             new XElement("Y", entity.Y)
                        );
this.xmlDoc.Add(carElement);
      修改节点的值:
  element.SetElementValue("Name", entity.Name);
      修改节点属性的值:

element.SetAttributeValue("Height", entity.Height);
      保存:

     this.xmlDoc.Save(filePath);   


还有很多对元素节点的操作,这都不说了。具体参见

点击打开链接

  



     
   

 




    

     

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值