Xml让人郁闷的SelectNodes方法

简介:

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)

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/archive/2008/02/26/1081889.html

目录
相关文章
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
|
XML JavaScript 前端开发
XML DOM - 属性和方法
XML DOM通过属性(如nodeName、nodeValue、parentNode、childNodes和attributes)和方法提供编程接口,让开发者用JavaScript等语言以节点方式交互XML。属性描述节点信息,方法执行操作,如删除节点。
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 提供编程接口,通过属性和方法操作XML结构。使用JavaScript等语言,可访问和修改节点。属性如nodeName、nodeValue揭示节点信息,方法如getElementsByTagName、appendChild、removeChild实现查找、添加和删除节点功能。节点对象x的应用示例贯穿其中。
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
XML Java 数据库连接
idea 从mapper方法直接点进xml文件的解决方法
idea 从mapper方法直接点进xml文件的解决方法
1202 2
|
XML JavaScript 前端开发
XML DOM - 属性和方法
**XML DOM 提供编程接口,将XML转换为节点对象,便于通过JS等语言操作。属性如 nodeName、nodeValue、parentNode、childNodes 和 attributes 描述节点详情。方法用于执行操作,如删除节点。**
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 是一个编程接口,它将XML表示为节点对象集合,可通过JavaScript等语言访问。接口通过属性和方法定义,属性如nodeName、nodeValue显示节点信息,方法如getElementsByTagName、appendChild、removeChild执行操作。例如,x.nodeName返回节点名称,x.appendChild(node)添加子节点。
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
193 6
|
XML JavaScript 前端开发
XML DOM - 属性和方法
XML DOM 提供编程接口,让开发者用JavaScript等语言操作XML文档。接口包含属性和方法,属性如nodeName、nodeValue、parentNode和childNodes,用于查询节点信息;方法如getElementsByTagName、appendChild和removeChild,执行增删操作。示例中,JavaScript代码`txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue`从books.xml获取第一个<title>元素的文本内容,赋值给变量txt。
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
564 1