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

By simon at 2018-02-07 • 0人收藏 • 67人看过

我有一个非常简单的XML片段存储在一个需要的文件 更新。 不幸的是它是一个处理指令在那我需要更新。 我可以使用XPath来获取处理指令的内容,或者至少 一部分? 例如充足:

<Include>
   <?define Version="2.0"?>
</Include>  
我需要得到“版本”的价值。

4 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

这个XPath表达式:

substring-before(
   substring-after(
      /Include/processing-instruction('define'),
      'Version="'
   ),
   '"'
)
评估字符串:'2.0'

2018-02-07   #2

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

2018-02-07   #3

从[这里]引用(http://www.dpawson.co.uk/xsl/sect2/N6145.html#d8657e109),

处理指令中的“属性”是不正确的实际上属性 - 他们只是看起来像他们。无意识的人是指这种类型的 “属性”为“伪属性”强调这一事实。至于 关于XPath数据模型而言,您可以获得的唯一信息就是 处理工具行动是它的目标,它的价值和它在节点中的位置 树。 所以你可以用自己的节点来获取节点

/Include/processing-instruction('define')
但是所有的that得到你是一个Value的Version="2.0"节点(作为一个 字符串),你必须解析自己。

2018-02-07   #4

这个XPath表达式:

substring-before(
   substring-after(
      /Include/processing-instruction('define'),
      'Version="'
   ),
   '"'
)
评估字符串:'2.0'

登录后方可回帖

Loading...