前两章介绍了关于Linq创建、解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如下,当遇到这样

<?xml version="1.0" encoding="utf-8"?>
<x0:Envelop xmlns:x0="http://www.w3school.com.cn/Envelope">
<x1:Header xmlns:x1="http://www.w3school.com.cn/Header">
<x1:Header>
<x1:Type>ICC</x1:Type>
<x1:Version></x1:Version>
</x1:Header>
</x1:Header>
<x1:Body xmlns:x1="http://www.w3school.com.cn/Body">
<x2:IBBC xmlns:x2="http://www.w3school.com.cn/IBBC/01">
<x2:SecondInform></x2:SecondInform>
<x2:Status>
<StatusCode></StatusCode>
</x2:Status>
<x2:Test>
<x2:Att price=""></x2:Att>
<x2:Att price=""></x2:Att>
</x2:Test>
</x2:IBBC>
</x1:Body>
</x0:Envelop>

对于删除操作:

第一,根据Linq查询语法获取StatusCode节点对象

第二,调用Remove方法删除对象节点

第三,保存文档

XElement root = XElement.Load("d:\\test.xml");
XNamespace x2 = @"http://www.w3school.com.cn/IBBC/01";//刪除
var statuscode = from c in root.Descendants(x2 + "StatusCode") select c;
statuscode.Remove();
root.Save(@"d:\test.xml");

对于修改操作:

这里有个地方要注意下

第一: SetValue方法,获取对象,添加修改值

//修改
var setcode = from d in root.Descendants(x2 + "StatusCode")
select d;
setcode.SingleOrDefault().SetValue("");
root.Save(@"d:\test.xml");

第二:SetElementValue方法,可以理解为覆盖,如果当前文档存在StatusCode元素,则进行修改,如果不存在,其功能相当于Add,将其元素添加到文档中

//修改
var setcode = from d in root.Descendants(x2 + "Status")
select d;
setcode.SingleOrDefault().SetElementValue("StatusCode","");
root.Save(@"d:\test.xml");

对于添加操作:

其实关于添加操作,在创建XML的时候就涉及到,现在做一些补充说明

①.在指定节点(Status)下插入指定节点(Test)(ps:StatusCode同级元素)

//添加
var tarStatus = from x in root.Descendants("StatusCode")
select x;
XElement test = new XElement(x2+"Test","我是一個測試值");
tarStatus.FirstOrDefault().AddAfterSelf(test);
root.Save(@"d:\test.xml");

可能有些复杂,或者说有些繁琐

对于查询操作:

1. Element():LINQ to XML 查询方法XDocument类的成员,也可用于XEelment类。该方法返回的XML文档或片段中的第一级元素

//查詢
var quests = from c in root.Elements()
select c;
foreach (var item in quests)
{
Console.WriteLine(item);
}
root.Save(@"d:\test.xml");

如图,当选择 select c 的返回Header和Body两个节点所有元素;当选择 Select c.Name时,返回节点名Header和Body

2.Descendants(): LINQ to XML 查询方法XDocument类的成员,也可用于XEelment类。该方法返回的XML文档或片段中的子元素

//查詢
var quests = from c in root.Descendants(x1 + "Type")
select c.Value ;
foreach (var item in quests)
{
Console.WriteLine(item);
}
root.Save(@"d:\test.xml");

3.Attribute():LINQ to XML 查询方法Attribute()成员,返回当前元素的所有特性

//查詢  得到12200
var quests = from c in root.Descendants(x2 + "Att")
where c.Attribute("price").Value==""
select c.Value;
foreach (var item in quests)
{
Console.WriteLine(item);
}
root.Save(@"d:\test.xml");

XML系列之--创建电文格式的XML(一)

XML系列之--解析电文格式的XML(二)

XML系列之--对电文格式XML的简单操作(三)

XML系列之--Linq操作带属性的XML(四)

Linq对XML的简单操作的更多相关文章

  1. XML系列之--对电文格式XML的简单操作(三)

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  2. C# XML,XmlDocument简单操作实例

    private static string _Store = LocalPathHelper.CurrentSolutionPath + "/data/bookstore.xml" ...

  3. WPF对于xml的简单操作(下下)插入节点并排序

    正如T所说,下下,这个方法不堪入目, ̄□ ̄|| 贴上再说 //先搞个struct声明 private struct datastruct { public string x; public strin ...

  4. WPF对于xml的简单操作(下)绑定ListView

    上个月做好的,电脑给盗了,没及时存在网盘,也及时发到随笔,于是乎悲哉!搞了一个上午终于绑定好了,有时候就是这么眼瞎,Path和XPath全瞎了,摸滚了一个上午,赶紧的随笔跟上先. <ListVi ...

  5. WPF对于xml的简单操作(上)

    private void button1_Click(object sender, RoutedEventArgs e) { XmlTextWriter writer = new XmlTextWri ...

  6. XML操作:2.LINQ TO XML(http://www.cnblogs.com/AlexLiu/archive/2008/10/27/linq.html)

    LINQ to XML 建立,读取,增,删,改   LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除.LINQ可以使的生成的XML文档在 ...

  7. Linq之Linq to XML

    目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...

  8. LINQ to XML 建立,读取,增,删,改

      LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除.LINQ可以使的生成的XML文档在内存中错落有致.下面以一个小的例子说名LINQ ...

  9. linq to xml 简单的增、删、改、查、保存xml文件操作

    using System; using System.Collections; using System.Configuration; using System.Data; using System. ...

随机推荐

  1. 【转发】关于Java性能的9个谬论

    转载请注明出处,感谢大家的支持!本文来自优优码:http://www.uucode.net/201502/9%e4%b8%aa%e8%b0%ac%e8%ae%ba Java的性能有某种黑魔法之称.部分 ...

  2. EMF学习,为了实现可扩展可自定义的模型验证 - 各种实现方法学习

    自: http://blog.csdn.net/javaman_chen/article/details/6057033 http://www.ibm.com/developerworks/cn/op ...

  3. 【iCore3 双核心板_FPGA】实验二十六:SDRAM读写测试实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1c1VRibY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  4. 移动web 公用样式

    /*! normalize.css v3.0.2 | MIT License | github.com/necolas/normalize */ /** * 1. Set default font f ...

  5. 关于flex中正则表达式上下文匹配的问题

    按照课本与网上的说法,斜杠'/'表示匹配上下文,例如ab/cd表示当ab后面有cd时匹配ab 然而如果实际这么写,flex在调用该正则表达式时触发'unrecognized rule' flex源代码 ...

  6. Elasticsearch判断多列存在、bool条件组合查询示例

    and符号判断多列存在:{   "filter": {     "and": [       {         "exists": {   ...

  7. php,session验证码不一致慢半拍

    这种问题遇到过一次,后来忘了怎么解决了,所以做下笔记 输出的$_SESSION['code']之所以比图片慢了‘一帧’,这也纯属正常情况因为输出的图片是一个连接一次调用,而echo $_SESSION ...

  8. 《阿Q正传》读后感

    kindle大法好. 利用坐车的时间阅读完了鲁迅先生写的<阿Q正传>, 心中感慨良多, 记下等以后翻看这些摸不着的回忆吧. 我没看过实体书版, 电子书版的<阿Q正传>注解很详细 ...

  9. 通过批处理来运行python程序

    >准备 >>在所用的python源程序最前面指定该源程序要用那种可执行程序去运行它 >>例如: #!/bin/sh shell脚本 #!/usr/bin/perl per ...

  10. visio取消自动粘附

    有时候画直线的时候需要直线摆在任意位置,这个时候自动粘附就很碍事了,总是自动把你的直线给摆到粘附的特殊位置上 如何取消: 视图->视觉帮助(点右下角的小箭头)->当前活动的->取消勾 ...