我可以使用XPath来获取XML中的处理指令的内容吗?

时间:2011-04-05 05:24:22

标签: xml xpath

我有一个非常简单的XML片段,存储在需要更新的文件中 不幸的是,这是我需要更新的处理指令。

我可以使用XPath获取处理指令的内容,或至少部分内容吗?

例如:

<Include>
   <?define Version="2.0"?>
</Include>  

我需要获得“版本”的价值。

3 个答案:

答案 0 :(得分:2)

我认为你不能得到'2.0'。您可以在单个值中获得“Version =”2.0“',然后手动从中提取”2.0“。它是xml规范的一部分。如果您希望获得2.0,请确保使用<define Version='2.0/>(使用元素而不是处理指令)。

答案 1 :(得分:2)

引自here

  

处理中的“属性”   说明实际上并非如此   属性 - 它们看起来像   他们。 Noramally人指的是这些   各种“属性”如   “伪属性”强调这一点   事实。至于XPath数据模型   关心,你唯一的信息   可以得到一个处理指令   是它的目标,它的价值和它的价值   节点树中的位置。

因此,您可以使用

访问节点本身
/Include/processing-instruction('define')

但是所有这些都是Value Version="2.0"(作为字符串)的节点,您必须自己解析。

答案 2 :(得分:2)

这个XPath表达式:

substring-before(
   substring-after(
      /Include/processing-instruction('define'),
      'Version="'
   ),
   '"'
)

评估字符串:'2.0'