selectnodes和selectSingleNode

Posted 极致世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selectnodes和selectSingleNode相关的知识,希望对你有一定的参考价值。

selectnodes: selectNodes和ChildNodes获取XML内容数组的差异性

我们在使用XML进行查询或者变更数据的时候,需要注意两个很相近但结果相差很大的用法,如下:

1: XmlDocument doc = new XmlDocument();

2: Doc.loadXml(strXml);

3: XmlNodeList xnlListOne = doc.selectNodes(“//Nodes/Node”);

4: XmlNodeList xnlListTwo = doc.selectSingleNode(“//Nodes”).ChildNodes;

乍一看,xnlListOne和xnlListTwo都是获取当前Xml文档中的Node数组,如果我们没有变动该Xml文档,则两者没有任何不同,但是一旦我们在后面的操作中添加或者删除了其中的Node节点的话,情况就不一样了,变动后,当我们使用我们前面获取的xnlListOne和xnlListTwo进行遍历操作的时候,我们会发现,前者不会有任何变动,而后者会根据文档内容的变动而实时更新!

这个特性在前台页面的脚本中也会有所出现,例如div嵌套时,获取其嵌套子div时候,使用ChildNodes来获取也会实时更新,这个特性是因为他们都是通过指针指向操作其内容的,其内部应该伴随这一次遍历操作,而获取的结果数组是一次计算后的结果,已经通过开辟新内存的方式进行存储,故而不会受到影响,当然,我们也可以通过这个特性来做一些特别的功能。

以上是关于selectnodes和selectSingleNode的主要内容,如果未能解决你的问题,请参考以下文章

获取 xml 节点值尝试使用 SelectSingleNode 和 SelectNodes 使用 c#

具有公共值的 XML SelectNodes,迭代

Dom4j中SelectNodes使用方法

XML 使用 SelectNodes 来获取具有空值子节点的节点

当 XPath 验证器返回正确结果时,为啥 XmlNode.SelectNodes 返回空列表?

HTMLAgilityPack SelectNodes 选择所有 <img> 元素