从xpath中查找包含标记作为子元素的字符串在Java中

时间:2018-03-05 10:30:00

标签: java jaxb marshalling unmarshalling for-xml-path

我有以下部分XML代码,我想从特定标签中获取字符串。

输入XML:

<subject>
   <title> this title has 5 <sup>+</sup> rating star </title>
</subject>

从上面的XML我想要一个使用xpath的字符串,如

预期产出:

"this title has 5+ rating star"

注意:我使用了@XmlPath

@XmlPath('subject/title/text()')
private String title;

但它返回第二个值作为标题变量的结果,如“评级明星”

2 个答案:

答案 0 :(得分:2)

这正是人们建议不要使用text()的原因,除非你有非常专业的要求。应用于节点的XPath函数string()返回节点的字符串值,对于元素,该元素是所有包含文本的串联,忽略标记 - 这正是您要查找的内容。所以你想要string(subject/title)。如果您正在使用Java API,请注意结果现在是字符串,而不是节点集。

答案 1 :(得分:0)

也许你可以试试string(subject/title)。我暂时无法访问Java,但字符串操作在XPath中很常见。它应该连接文本内容而不留下任何元素的痕迹。