首页 > 编程语言 >Xml让人郁闷的SelectNodes方法

Xml让人郁闷的SelectNodes方法

时间:2022-09-29 23:08:59浏览次数:57  
标签:Xml xpath namespace SelectNodes xmlDoc 郁闷 查询 节点

SelectNodes(xpath,namespace)方法中
无论是xmlDoc.SelectNodes(xpath,namespace) //假设xmlDoc为根节点,整个文档下的查询
还是xmlDoc.ChildNodes[i].SelectNodes(xpath,namespace) //节点下的查询
两个查询的结果一样:都会把整个文档符合xpath语法条件的都给查出来了
事实上我们所要的只是要在某一节点下符合xpath语法的结果

经过一鄱查询与研究解决之道后...
发现用xmlDoc.ChildNodes[i].Clone().SelectNodes(xpath,namespace)可以解决
即克隆出一节点后,再从克隆的节点中查询即可找出所需要的结果

但另一问题产生了,既然查询的结果是克隆后出来,那就算结果节点被改变后,原来的xmlDoc也不会有变化

要关联变化,暂时的方法是遍历xmlDoc.ChildNodes[i],从中找出符合条件的节点,再将结果节点进行替换

总结:
既然最后还要遍历替换结果,那之前的克隆节点查询显得有点就多余了,一开始直接遍历不就完了
结论:
那在某一节点下的Node.SelectNodes方法还有意义么?SelectNodes只能用在整个xml文档中查询了!
编辑下最终答案:
今天回头又遇到,记录一下,正确的写法是:
子节点.SelectNodes("descendant::节点名称",namespace)

标签:Xml,xpath,namespace,SelectNodes,xmlDoc,郁闷,查询,节点
From: https://blog.51cto.com/cyq1162/5724351

相关文章

  • 读取xml文件帮助类
    1.XML帮助类publicclassXmlHelper{publicstaticstringGetElementByName(stringxmlFileName,stringtagName){try......
  • 关于UE4 C++项目编译rapidxml库并运行时报错问题
    新建了一个UE4的C++项目,想使用第三方的rapidxml库对我以前作cocos2d-x的游戏配置数据进行解析,因为以前就用的是这个库。发现在UEEditer里编译C++的时候不会出错,但在xc......
  • 6.Xml
          ......
  • C#使用 OpenXML SDK读取Excel文档
        Excel的文档,本身就是一个压缩包,使用压缩工具打开一个excel文件,可以看到里边的文件列表如下图:    里边的文件主要就是一些xml文件和其他的素材    ......
  • idea代码格式xml
    <code_schemename="Defaultcopy"version="173"><optionname="LINE_SEPARATOR"value="&#xA;"/><codeStyleSettingslanguage="JAVA"><optionname="KEEP_LINE......
  • Servlet的web.xml,配置映射路径(既访问的位置)
    <?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • 【XML】学习笔记第四章-schema
    Schema概述作用与DTD相比Schema的优势基础命名空间:模式引用方法通过xsi:noNamespaceSchemaLocation引入通过xsi:shemaLocation引入Schema的语法结构定......
  • 【XML】学习笔记第三章-namesapce
    目录命名空间命名空间概述命名空间语法命名空间的声明命名空间作用域对命名空间的使用元素对命名空间的使用属性对命名空间的使用DTD对命名空间的支持命名空间命名空间概......
  • 【XML】学习笔记第二章-dtd
    目录XML-DTDDTD语句基本声明语句引用外部DTDDTD元素四种元素类型元素定义关键字修饰符号DTD中的属性属性修饰属性类型DTD中的实体和符号符号坑XML-DTDDTD(DocumentTypeD......
  • log4j.xml
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationPUBLIC"-//log4j/log4jConfiguration//EN""log4j.dtd"><log4j:configurationxmlns:log4j="......