前两章介绍了关于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(四)

XML系列之--对电文格式XML的简单操作(三)的更多相关文章

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

    关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...

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

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

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

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  4. Linq对XML的简单操作

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

  5. 比較全的XML系列工具 能够轻松实现排版、转换和打印!

    XML系列 --------------------------------------------------------------------------------1.Xsl Formatte ...

  6. 解析某些特殊格式XML文件时,获取不到根节点问题

    还是在语音识别这块.在读取本地的SRGS的XML后,无法获取到根节点<grammar>. 下面是SRGS.XML文件(只给出了根节点) <?xml version="1.0 ...

  7. [WEB API] CLIENT 指定请求及回应格式(XML/JSON)

    [Web API] Client 指定请求及响应格式(xml/json) Web API 支持的格式请参考 http://www.asp.net/web-api/overview/formats-an ...

  8. 实战:sqlserver 2008 扩展事件-XML转换为标准的table格式

    --假设已经存在Event Session删除 IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQu ...

  9. C#编程基础->XML系列导航

    缘由 最近开发的小程序过程中需要涉及到XML相关操作,突然发现自己对于这知识点了解的太少,急需学习加强.刚好项目的时间也不是很紧急,自己就总结XML相关知识点.一个方面自己学习,一个方面也希望可以帮到 ...

随机推荐

  1. selenium+xpath在不同层级的写法

    总结:定位虽然用Inndex定位最快,但是定位最好不要用浏览器自带定位xpath,尽量不要用Index,否则写的UI自动化脚本的定位元素,需要重新维护.代价太大. 一:不在同一层级,可以用[./..] ...

  2. java JDBC (三) 修改

    package cn.sasa.demo3; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...

  3. java开发中乱码的解决

    总结一下,在JavaWeb中针对各种情况处理中文乱码的方法. 首先我们看下,一个请求响应的流程 浏览器------------------>Servlet容器---------------> ...

  4. 数据库级别DML操作监控审计、表触发器/对象触发器

    使用触发器记录DML,使用触发器记录表的DML 数据库级别DML操作监控审计.表触发器/对象触发器 --创建记录表 CREATE TABLE T_SHALL_LOG ( ID , ) , EVTIME ...

  5. discuz优化10个小技巧

    Discuz论坛是国内使用最多的论坛系统,现在最新版为X 3.4,X3.4 从 2018 年 1 月 1 日起只在官方 Git 发布,地址:https://gitee.com/ComsenzDiscu ...

  6. UniConnectDialog使用

    对话框中文显示 设计视图 设置参数 取值结果 获取根据参数设置的值关键代码 UniConnection1.ConnectDialog := UniConnectDialog1; UniConnecti ...

  7. 在Windows Server 2008的桌面上显示“我的电脑”“网上邻居”等图标?

    装完windows server2008 r2 x64后发现桌面只有一个“回收站”图标,如何把“我的电脑”“网上邻居”等图标添加到桌面呢?操作步骤: 1. 点击 开始 在搜索中输入 icon 2. 点 ...

  8. Windows本机搭建Redis

    1 下载安装包 GIT:https://github.com/MicrosoftArchive/redis/releases       Redis-x64-3.2.100.zip 百度网盘 :链接: ...

  9. Linux修改IP网络配置

    文件路径:/etc/sysconfig/networe-scripts/ifcfg-eth0 BOOTPROTO="static" IPADDR=IP地址 NETMASK=掩码 G ...

  10. Linux开启root用户

    1.进入系统的时候Ctrl + Alt + F1,切换到命令窗口,登录现有用户: 2.执行sudo passwd root + root的密码: 3.按照要求输入密码: ==> root用户密码 ...