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( ...
随机推荐
- DICOM医学图像处理:Deconstructed PACS之Orthanc,Modification & Anonymization
背景: 上篇博文为引子,介绍了一款神奇的开源PACS系统——Orthanc.本篇开始解读官方Cookbook中的相关内容,对于简单的浏览.访问和上传请阅读前篇博文.在常规的PACS系统中还未出现对于D ...
- python_获得列表中重复的项的索引
a = ['b','a', 'b', 'c', 'a', 'c','d'] b=[] f=[] for i in a: c=[] for item in enumerate(a): if item[1 ...
- Python中的列表、元祖、字典
一.列表 一组有序项目的集合.可变的数据类型[可进行增删改查] 列表是以方括号"[]"包围的数据集合,不同成员以","分隔. 列表中能够包括不论什么数据类型,也 ...
- man gitworkflows
gitworkflows(7) Manual Page NAME gitworkflows - An overview of recommended workflows with Git SYNOPS ...
- Android.mk: recipe commences before first target. Stop.
[GUIDE] Setup Android Development Environment on Ubuntu 14.04 Trusty Tahr Hi All, This originally wa ...
- 将UIBezierPath存为自己定义格式的字符串,再将字符串转为UIBezierPath
<pre name="code" class="objc">自己定义字符串格式为:@"123.02,234.23|321.23,432.0 ...
- SpringSecurity学习笔记(一):搭建最简单的SpringSecurity应用
学习过程参考自:http://www.mossle.com/docs/auth/html/pt01-quickstart.html 一.搭建Maven项目: 所需引用的jar包如下: pom.xml文 ...
- Graphics and Animation in iOS
using System;using UIKit;using CoreGraphics;using Foundation; namespace GraphicsAnimation{ public c ...
- 02-合并frame
进入IJKMediaPlayer工程--->
- [ios]objective-c中Category类别(扩展类)专题总结
本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/ objective-c类别的作用?通过类别的方式, ...