我有像xml一样的
<a>
<b att="x">
</b>
</a>
我用java解析这个xml,我手里有一个节点。我的问题是如何将这个节点转换为xpath表达式a/b[@att='x']
?
答案 0 :(得分:1)
我认为没有绝对通用的解决方案。在xpath 2.0中,您可能会创建类似
的内容string-join(
for $x in ./ancestor-or-self::* return
if ($x/@att)
then concat($x/name(), '[@att="', $x/@att, '"]')
else $x/name()
, '/'
)
输入
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>
<b att="x"></b>
<b att="y"></b>
<b att="z"></b>
</a>
</root>
假设你持有第3个b元素,它会给出字符串
root/a/b[@att="z"]
但是这种形式非常有限(它只看一个属性,这个属性必须命名为“att”,如果多个元素b具有相同的@att值等,它不适用于位置等。 。)并且必须以更精确的形式编写。这只是一个想法。