XDocument比XmlDocument好用太多

  • XmlDocument 位于 using System.Xml; 下
  • XmlDocument位于using System.Xml.Linq;下

XmlDocument

比如,我需要解soap格式的XML:

string xml_str = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""><soap:Body><UniRequest xmlns=""http://tempuri.org/""><rb><account>admin</account><optype>0</optype>
<param>{""moid"":""WO09001"",""partID"":""3F258-A-MPWN"",""ppid"":""8789454645
"",""testStation"":""T00001""}</param><password>888</password><sericeName>GET_PROCESS_STATUS</sericeName></rb></UniRequest></soap:Body>
</soap:Envelope>
";

如果是XmlDocument,直接解析是不行的,这种标签带了空间名称(soap:),直接解析会导致报错,你得这么写(添加命名空间):

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml_str);XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");XmlNode rootNode = xmlDoc.SelectSingleNode("//soap:Envelope", nsmgr);

而且,找内层节点,你得一层层的剥开,没办法一次到位。

这太low了,适应性太差,结构稍有变化,就会嗝屁。于是我找到了XDocument

XDocument

它无视空间名称(soap:)直接读就完了,而且能一次到位:

比如我想将上面字符串中的json取出来:

TextReader tr = new StringReader(xml_str);
XDocument doc = XDocument.Load(tr);
XElement xroot = doc.Root;//根节点
var nodes = xroot.Descendants().FirstOrDefault(a => a.Name.LocalName == "param").Value;

一次到位:

【C#】xml解析对比XDocument和XmlDocument相关推荐

  1. XML(3)XDocument与XmlDocument递归读取xml文件

    通过XDocument与XmlDocument将xml文件读取到TreeView上,其中主要是用递归方式将xml下的元素都加载到TreeView控件上面. XDocument 步骤: (1)加载xml ...

  2. xml解析库对比总结(解析方式,第三方库,TinyXml)

    一. 解析方式 xml的2种解析方式(DOM和SAX解析方式): https://blog.csdn.net/weixin_42472048/article/details/81264570 dom解 ...

  3. XML解析中的namespace初探

    初学者在解析XML文件的时候最容易遇到的问题恐怕就是XML的namespace了,本文旨在对namespace做一个简要的介绍. namespace的意义无需多说,和C++,C#等高级语言一样,XML ...

  4. 简述C# XML解析方法的特点及应用

    C# XML解析方法都有哪些呢?在程序中访问并操作XML文件一般有两种模型:流模型和DOM(文档对象模型).流模型中有两种变体--"推"模型和"拉"模型. C# ...

  5. iOS中XML解析汇总

    在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/forum.php?mod=viewthread&tid=9880&hi ...

  6. XML解析(二),DOM解析XML

    转载自   XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...

  7. iOS中的XML解析

    解析方式分类: 解析 XML 通常有两种方式,DOM 和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值. ...

  8. iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组)

    关联:iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组) 在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/f ...

  9. XML解析及JSON解析

    目录 XML 1. XML简介 2. 特性 3. 语法格式 4. 例子 5. 部分Demo 注意: Demo1: 解析本地 XML文件 Demo2: 解析网络运营商接口返回的XML Demo3: 通过 ...

最新文章

  1. 传美的投40亿进军卫浴行业
  2. iOS开发之iOS程序偏好设置(Settings Bundle)的使用
  3. linux下用dd命令拷贝硬盘黑屏,linux下用dd命令拷贝硬盘
  4. 简单探索MNIST(Softmax回归和两层CNN)-Tensorflow学习
  5. cpu飙升 死循环_java排查一个线上死循环cpu暴涨的过程分析
  6. oracle个人版初始密码,不知道普通用户密码,只知道sys用户密码,不修改普通用户密码,即可登录...
  7. stringcstdlibctimecstdargctimectypecmathclimits
  8. 安装memcache
  9. 组件注册-@Scope-设置组件作用域
  10. 如果你想靠写作变现,一定要看看下面这3点
  11. 可观测性平台下的低代码技术实践
  12. 【Linux】修改镜像源
  13. 【渝粤题库】广东开放大学 财务会计(1) 形成性考核
  14. NeoKylin Linux Advanced Server release 6.0 安装及卸载达梦7入门操作
  15. 帝国cms配置php,帝国cms如何安装
  16. 项目经理的能力模型和能力提升的方法
  17. python命名规则数字开头的成语_day01 Python基础
  18. 数据库表的设计什么时候可以存在冗余?
  19. 蚂蚁金服风控部怎么样_蚂蚁金服面试——风控策略
  20. 十进制快速转换为二进制

热门文章

  1. C语言回调函数的定义和写法
  2. 半定制器件课程设计——基于FPGA的PS2键盘人机输入显示系统
  3. JVM笔记(三)类与类加载
  4. JDBC,你真的知道怎么用吗?
  5. Java中 支持多继承吗?
  6. 测试jre 和jdk是否安装好
  7. 【flask】 flask
  8. xsy3320 string
  9. bootstrap图片上传
  10. 计算机策略组 网络,组策略怎么用 玩转电脑组策略技巧 (全文)