XML 解析中 SelectSingleNode 与 SelectNodes 使用通配符介绍
俺是 XML XPath的新手,最近因为项目需要,研究了一下基本的两个函数 SelectSingleNode和SelectNodes 是如何实用通配符的,分享以下基本经验:
假设有段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")
目前还不知道为什么会这样。
XML 解析中 SelectSingleNode 与 SelectNodes 使用通配符介绍的更多相关文章
- XML 解析中,如何排除控制字符
XML 解析中,如何排除控制字符 今天在解析一个中文的 XML时,始终报错 PCDATA invalid Char value 21 in Entity ,查询了一下这个 21 的ascii 值,发现 ...
- XML解析中的namespace初探
原文:XML解析中的namespace初探 初学者在解析XML文件的时候最容易遇到的问题恐怕就是XML的namespace了,本文旨在对namespace做一个简要的介绍. namespace的意义无 ...
- xml解析中的sax解析
title: xml解析中的sax解析 tags: grammar_cjkRuby: true --- SAXPasser 类: parser(File file, DefaultHandler ha ...
- 关于XML解析中的CDATA的简单介绍
所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA PCDATA 指的是被解析的字符数据(Parsed Chara ...
- java基础74 XML解析中的SAX解析相关知识点(网页知识)
1.SAX解析工具 SAX解析工具:是Sun公司提供的,内置JDK中.org.xml.sax.* 点击查看: DOM解析相关知识:以及DOM和SAX解析的原理(区别) 2.SAX解析的 ...
- java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)
本文知识点(目录):本文下面的“实例及附录”全是DOM解析的相关内容 1.xml解析的含义 2.XML的解析方式 3.xml的解析工具 4.XML的解析原理 5.实例 6 ...
- Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
- dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结 (转)
没想到搞个dom4j会出这么多怪错.. 最近在研究XBRL GL的有关内容,在项目中要求吧XBRL GL导入到11179注册库中,根据11179建立数据库,然后从XBRL GL分类标准中导入数据到数据 ...
- android xml解析中的null问题
当我们从服务器或者xml文件加载xml进行解析的时候,往往报告 nullpointer 错误.这是原始代码: String short_name = doc.getElementsByTagName( ...
随机推荐
- 很多shell命令后面的单横杠和双横杠,原来这个意思
原文: https://blog.csdn.net/deyili/article/details/5471023 ------------------------------------------- ...
- Free Pascal 的安装
Free Pascal 的安装 https://www.cnblogs.com/cnssc/p/6110492.html https://wenku.baidu.com/view/ee80cc8eed ...
- PS 如何制作柔和的边框
柔和边框制作 1 新建一个图层,按填充为黑色.(填充当前图层为前景色 A/T+Delete 背景色 CTRL+Delete),不透明度设为60%.混合模式为正片叠底, 2 选择椭圆选择一片区域(也 ...
- 需要配置执行path?no
下面的代码以管理员权限运行即可,保存为bat 2018/2/6(basic) - 初始化版本 @echo off :continue echo 输入exit退出 set /p My_PATH=请输入要 ...
- python(10)- 字符编码
一 什么是编码? 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类可以理解.易懂的表示存在.我打算将这种表示称为“明文”(plain text).对于说英语的人,纸张上打印的或屏幕上显示的英 ...
- python(35)- 异常处理
一 错误和异常 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...
- iOS 摇一摇的实现
- (void)viewDidLoad { [super viewDidLoad]; [[UIApplication sharedApplication] setApplicationSupports ...
- Discuz系列1:安装
http://www.discuz.net/forum.php 官网,点击“Discuz! 程序发布” 代码库: https://git.oschina.net/ComsenzDiscuz/D ...
- Android 一键清理动画
版本号:1.0 日期:2014.7.29 2014.7.30 版权:© 2014 kince 转载注明出处 一键清理是非常多Launcher都会带有的功能,其效果也比較美观.实现方式或许有非常多 ...
- Hibernater中的持久化对象以及状态转换
一.持久化对象的要求 1.提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance() 来实例化持久化类. 2.提供一个标识属性(identifier prop ...