【C#】xml解析对比XDocument和XmlDocument
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相关推荐
- XML(3)XDocument与XmlDocument递归读取xml文件
通过XDocument与XmlDocument将xml文件读取到TreeView上,其中主要是用递归方式将xml下的元素都加载到TreeView控件上面. XDocument 步骤: (1)加载xml ...
- xml解析库对比总结(解析方式,第三方库,TinyXml)
一. 解析方式 xml的2种解析方式(DOM和SAX解析方式): https://blog.csdn.net/weixin_42472048/article/details/81264570 dom解 ...
- XML解析中的namespace初探
初学者在解析XML文件的时候最容易遇到的问题恐怕就是XML的namespace了,本文旨在对namespace做一个简要的介绍. namespace的意义无需多说,和C++,C#等高级语言一样,XML ...
- 简述C# XML解析方法的特点及应用
C# XML解析方法都有哪些呢?在程序中访问并操作XML文件一般有两种模型:流模型和DOM(文档对象模型).流模型中有两种变体--"推"模型和"拉"模型. C# ...
- iOS中XML解析汇总
在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/forum.php?mod=viewthread&tid=9880&hi ...
- XML解析(二),DOM解析XML
转载自 XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...
- iOS中的XML解析
解析方式分类: 解析 XML 通常有两种方式,DOM 和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值. ...
- iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组)
关联:iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组) 在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/f ...
- XML解析及JSON解析
目录 XML 1. XML简介 2. 特性 3. 语法格式 4. 例子 5. 部分Demo 注意: Demo1: 解析本地 XML文件 Demo2: 解析网络运营商接口返回的XML Demo3: 通过 ...
最新文章
- 传美的投40亿进军卫浴行业
- iOS开发之iOS程序偏好设置(Settings Bundle)的使用
- linux下用dd命令拷贝硬盘黑屏,linux下用dd命令拷贝硬盘
- 简单探索MNIST(Softmax回归和两层CNN)-Tensorflow学习
- cpu飙升 死循环_java排查一个线上死循环cpu暴涨的过程分析
- oracle个人版初始密码,不知道普通用户密码,只知道sys用户密码,不修改普通用户密码,即可登录...
- stringcstdlibctimecstdargctimectypecmathclimits
- 安装memcache
- 组件注册-@Scope-设置组件作用域
- 如果你想靠写作变现,一定要看看下面这3点
- 可观测性平台下的低代码技术实践
- 【Linux】修改镜像源
- 【渝粤题库】广东开放大学 财务会计(1) 形成性考核
- NeoKylin Linux Advanced Server release 6.0 安装及卸载达梦7入门操作
- 帝国cms配置php,帝国cms如何安装
- 项目经理的能力模型和能力提升的方法
- python命名规则数字开头的成语_day01 Python基础
- 数据库表的设计什么时候可以存在冗余?
- 蚂蚁金服风控部怎么样_蚂蚁金服面试——风控策略
- 十进制快速转换为二进制