俺是 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 使用通配符介绍的更多相关文章

  1. XML 解析中,如何排除控制字符

    XML 解析中,如何排除控制字符 今天在解析一个中文的 XML时,始终报错 PCDATA invalid Char value 21 in Entity ,查询了一下这个 21 的ascii 值,发现 ...

  2. XML解析中的namespace初探

    原文:XML解析中的namespace初探 初学者在解析XML文件的时候最容易遇到的问题恐怕就是XML的namespace了,本文旨在对namespace做一个简要的介绍. namespace的意义无 ...

  3. xml解析中的sax解析

    title: xml解析中的sax解析 tags: grammar_cjkRuby: true --- SAXPasser 类: parser(File file, DefaultHandler ha ...

  4. 关于XML解析中的CDATA的简单介绍

    所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA PCDATA 指的是被解析的字符数据(Parsed Chara ...

  5. java基础74 XML解析中的SAX解析相关知识点(网页知识)

    1.SAX解析工具 SAX解析工具:是Sun公司提供的,内置JDK中.org.xml.sax.*         点击查看: DOM解析相关知识:以及DOM和SAX解析的原理(区别) 2.SAX解析的 ...

  6. java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)

    本文知识点(目录):本文下面的“实例及附录”全是DOM解析的相关内容 1.xml解析的含义    2.XML的解析方式    3.xml的解析工具    4.XML的解析原理    5.实例    6 ...

  7. Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写

    转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...

  8. dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结 (转)

    没想到搞个dom4j会出这么多怪错.. 最近在研究XBRL GL的有关内容,在项目中要求吧XBRL GL导入到11179注册库中,根据11179建立数据库,然后从XBRL GL分类标准中导入数据到数据 ...

  9. android xml解析中的null问题

    当我们从服务器或者xml文件加载xml进行解析的时候,往往报告 nullpointer 错误.这是原始代码: String short_name = doc.getElementsByTagName( ...

随机推荐

  1. DICOM医学图像处理:Deconstructed PACS之Orthanc,Modification & Anonymization

    背景: 上篇博文为引子,介绍了一款神奇的开源PACS系统——Orthanc.本篇开始解读官方Cookbook中的相关内容,对于简单的浏览.访问和上传请阅读前篇博文.在常规的PACS系统中还未出现对于D ...

  2. python_获得列表中重复的项的索引

    a = ['b','a', 'b', 'c', 'a', 'c','d'] b=[] f=[] for i in a: c=[] for item in enumerate(a): if item[1 ...

  3. Python中的列表、元祖、字典

    一.列表 一组有序项目的集合.可变的数据类型[可进行增删改查] 列表是以方括号"[]"包围的数据集合,不同成员以","分隔. 列表中能够包括不论什么数据类型,也 ...

  4. man gitworkflows

    gitworkflows(7) Manual Page NAME gitworkflows - An overview of recommended workflows with Git SYNOPS ...

  5. Android.mk: recipe commences before first target. Stop.

    [GUIDE] Setup Android Development Environment on Ubuntu 14.04 Trusty Tahr Hi All, This originally wa ...

  6. 将UIBezierPath存为自己定义格式的字符串,再将字符串转为UIBezierPath

    <pre name="code" class="objc">自己定义字符串格式为:@"123.02,234.23|321.23,432.0 ...

  7. SpringSecurity学习笔记(一):搭建最简单的SpringSecurity应用

    学习过程参考自:http://www.mossle.com/docs/auth/html/pt01-quickstart.html 一.搭建Maven项目: 所需引用的jar包如下: pom.xml文 ...

  8. Graphics and Animation in iOS

     using System;using UIKit;using CoreGraphics;using Foundation; namespace GraphicsAnimation{ public c ...

  9. 02-合并frame

    进入IJKMediaPlayer工程--->

  10. [ios]objective-c中Category类别(扩展类)专题总结

    本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/   objective-c类别的作用?通过类别的方式, ...