c语言ecit,[转载]c# linq的一些运用 – EcitGis – 博客园

本文介绍了XML.Linq的基础概念,如XDeclaration、XDocument和XElement,展示了如何创建、遍历XML文档,删除节点,以及使用LINQ to XML进行元素操作。通过实例演示了文件读写、属性获取和节点删除等关键技巧。适合初学者理解和实践XML在.NET中的应用。
摘要由CSDN通过智能技术生成

2966591fe80e1a10e2cc1e74d9babd7e.png0e3ea6bd97d7c2dd9d5683a911f062c5.png

最近在学习xml.linq 网上也找了一些资料都不大全面,因此在这写了一点东西和大家分享,由于本人知识有限,如有错误请指证

可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自 己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。(百度)

学习xml.linq,首先要了解xml的几个定义。

1.XDeclaration—– XML 声明用于声明 XML 版本、编码以及 XML 文档是否独立,如果想新建一个xml文件需要在xml文件的最前面声明xml的一些信息

1 XDeclaration m_XDexlaration = new XDeclaration("1.0", "utf-8", "yes"); //初始化 XDeclaration

2 XDocument m_Xdocument = new XDocument(m_XDexlaration, new XElement("person")); //初始化 XDocument 初始化一个文档时 记得要有一个根节点不然报错

3 m_Xdocument.Save("person.xml");//文档保存

结果:

2. XElement , XElement 是指包含在尖括号里面的有开始结束标签的标记语言,比如 person ,item就是一个元素

3.XAttribute 属性,比如 person中的color就是item的属性

4.node 节点,节点是一个比较抽象的定义,在xml文档中 node可以是 元素和其他的一些东西

二.xml.linq一些方法的运用

1.初始化一个xml文档

XDeclaration xs = new XDeclaration("1.0", "utf-8", "yes");

XDocument xdoc=new XDocument(xs,new XElement ("person",new XAttribute("color","red"),new XAttribute("size","big"),new XElement("name","刘清"),new XElement("age","18")));

xdoc.Save("p.xml");

Console.WriteLine(xdoc);

初始化文档时注意一下几点:

1.首先应有 XDeclaration ,就是xml的定义比如版本,编码方式登

2.初始化xml时要有一个根节点,比如上面的person就是一个根节点。上面定义了根节点的两个属性,color,size;在person下面有两个子节点 name和age

69c5a8ac3fa60e0848d784a6dd461da6.png

刘清

18

69c5a8ac3fa60e0848d784a6dd461da6.png

2.xml文件的遍历

比如有一个xml文档时这样的

打开工作空间

关闭工作空间

保存工作空间

退出工作空间

打印

复制

剪切

粘贴

菜单管理器

现在我要遍历它所有的项,并根据读取元素strip 的menu属性

69c5a8ac3fa60e0848d784a6dd461da6.png

1 ArrayList name=newArrayList();2 ArrayList s_name;3 XDocument m_Xdocument = XDocument.Load("MenuXml.XML");//使用xdocument类的静态方法读取文档

4 XElement m_Xlement = m_Xdocument.Element("Menu"); //读取根元素

5 IEnumerable sdf = m_Xlement.Elements("strip");//读取strip元素下的节点(有两个strip节点元素和若干item元素)

6 int i = 0;7 foreach (XElement sld insdf)8 {9 name.Add( sld.Attribute("menu").Value);//得到strip的属性menu

10 Console.WriteLine(name[i++]);11 }12 IEnumerable i_XElment = m_Xlement.Elements();//获得根元素(Menu)下面的所有节点元素

13 foreach (XElement x ini_XElment)14 {15 IEnumerable p_xelment = x.Elements("item");16 s_name = newArrayList();17 foreach (XElement e inp_xelment)18 {19

20 Console.Write(e.Value.ToString());21 }22

23

24 }

69c5a8ac3fa60e0848d784a6dd461da6.png

文件

编辑

打开工作空间 关闭工作空间 保存工作空间 退出工作空间 打印 复制 剪切 粘贴

菜单管理器 请按任意键继续. . .

3.删除特定的节点

假定有个xml文档为MenuXml 其内容为

69c5a8ac3fa60e0848d784a6dd461da6.png

关闭工作空间

保存工作空间

退出工作空间

打印

69c5a8ac3fa60e0848d784a6dd461da6.png

现在我要删除其中一个元素名为“关闭工作空间” 代码如下

69c5a8ac3fa60e0848d784a6dd461da6.png

1 XDocument m_Xdocument = XDocument.Load("MenuXml.XML");//使用xdocument类的静态方法读取文档

2 XElement m_Xlement = m_Xdocument.Element("Menu"); //读取根元素

3

4 IEnumerable xe = m_Xlement.Elements();//得到根元素下的集合

5 foreach (XElement x inxe)6 {7 IEnumerable xes = x.Elements("item");//得到item的集合

8 foreach (XElement ds inxes)9 {10 if (ds.Value.ToString().Trim() == "关闭工作空间")//对比

11 {12 ds.Remove();13 m_Xdocument.Save("MenuXml1.XML");//保存为新的xml

14 }15 }16 }17 XDocument a1 = XDocument.Load("MenuXml.XML");18 XDocument a2 = XDocument.Load("MenuXml1.XML");19 Console.WriteLine(a1);20 Console.WriteLine(a2);

69c5a8ac3fa60e0848d784a6dd461da6.png

结果如下

关闭工作空间

保存工作空间

退出工作空间

打印

保存工作空间

退出工作空间

打印

请按任意键继续. . .

在学习linq xml时要注意的是,通过方法.Element()得到的只是只是第一组标签(如果该标签存在多对时)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值