XML 解析中 SelectSingleNode 与 SelectNodes 使用通配符介绍
2013-11-19 12:03
585 查看
俺是 XML XPath的新手,最近因为项目需要,研究了一下基本的两个函数 SelectSingleNode和SelectNodes 是如何实用通配符的,分享以下基本经验:
假设有段XML 如下所示:
如果我想要上述说有的参数 Left值,可以实用 SelectNodes:
如果我想要 Page2 的参数Left值,可以使用 SelectSingleNode 以及 // 通配符
当然,有更多的选择:
* 前面如果有 /, 那 * 只能配一个节点; 如果*前没有 /,则可以配很多节点;
以上的通配方法,对SelectNodes也是有效的,但是有一个问题是:
*/*/Left 能够把所有的 Left 节点打印出来
但是 */Left 却不行
以下代码是错误的:
目前还不知道为什么会这样。
假设有段XML 如下所示:
<PageConfigs> <Page Name="Page1" PageMode="0"> <Position> <Left>190</Left> <Top>0</Top> <Width>1920</Width> <Height>1080</Height> <ZIndex>1</ZIndex> </Position> </Page> <Page Name="Page2" PageMode="0" Visible="0"> <Position> <Left>180</Left> <Top>0</Top> <Width>1920</Width> <Height>1080</Height> </Position> <BizControl DllName="DEF" ClassName="ttt.zzz"/> <Animation> <StopAnimation>FadeOut</StopAnimation> <StartAnimation>FadeIn</StartAnimation> </Animation> </Page> </PageConfigs>
如果我想要上述说有的参数 Left值,可以实用 SelectNodes:
$colNodes = $objXML.documentElement.SelectNodes("//Left") For $colnode In $colNodes ConsoleWrite("From SelectNodes: " & $colNode.text & @CRLF) Next
如果我想要 Page2 的参数Left值,可以使用 SelectSingleNode 以及 // 通配符
$colNode2 = $objXML.documentElement.SelectSingleNode("//Page[@Name='Page2']//Left") ConsoleWrite("From SelectSingleNode: " & $colNode2.Text & @CRLF)
当然,有更多的选择:
$colNode2 = $objXML.documentElement.SelectSingleNode("//*[@Name='Page2']//Left")
$colNode2 = $objXML.documentElement.SelectSingleNode("*[@Name='Page2']//Left")
$colNode2 = $objXML.documentElement.SelectSingleNode("*[@Name='Page2']/*/Left")
* 前面如果有 /, 那 * 只能配一个节点; 如果*前没有 /,则可以配很多节点;
以上的通配方法,对SelectNodes也是有效的,但是有一个问题是:
*/*/Left 能够把所有的 Left 节点打印出来
$colNodes = $objXML.documentElement.SelectNodes("*/*/Left")
但是 */Left 却不行
以下代码是错误的:
$colNode2 = $objXML.documentElement.SelectSingleNode("*/Left") $colNodes = $objXML.documentElement.SelectNodes("*/Left")
目前还不知道为什么会这样。
相关文章推荐
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- XML SelectSingleNode的使用 根据节点属性获取该节点
- [JavaScript] 兼容IE、FireFox、Chrome等浏览器的xml处理函数(xml同步/异步加载、xsl转换、selectSingleNode、selectNodes)
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- [JavaScript] 兼容IE、FireFox、Chrome等浏览器的xml处理函数(xml同步/异步加载、xsl转换、selectSingleNode、selectNodes)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- 读取XML节点selectNodes与selectSingleNode的用法的区别
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- firefox chrome ie9,10,11 不支持selectSingleNode和selectNodes的解决方法
- xmlnode.SelectSingleNode访问不到节点
- Java XML解析工具 dom4j介绍及使用实例
- 我错了,有个叫 SelectSingleNode 的可以操作 xml
- Xml中SelectSingleNode方法中的xpath用法
- 关于selectNodes与selectSingleNode的用法的区别