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

从xpath中查找字符串,该字符串在Java中包含作为子元素的标记,java,jaxb,marshalling,unmarshalling,for-xml-path,Java,Jaxb,Marshalling,Unmarshalling,For Xml Path,我有以下XML代码的一部分,我想从特定的标记中获取字符串 输入XML: <subject> <title> this title has 5 <sup>+</sup> rating star </title> </subject> 注意:我使用了@XmlPath-like @XmlPath('subject/title/text()') private String title; 但它返回第二个值作为title变量

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

输入XML:

<subject>
   <title> this title has 5 <sup>+</sup> rating star </title>
</subject>
注意:我使用了@XmlPath-like

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

但它返回第二个值作为title变量的结果,如“rating star”

也许您可以尝试
string(subject/title)
。目前我还没有访问Java的权限,但是字符串操作在XPath中非常常见。它应该在没有任何元素痕迹的情况下连接文本内容。

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

当然,但您的尝试在哪里?@AniketSahrawat我面临的问题就像如果主标记包含子标记,那么它将返回字符串的最后一部分作为结果并覆盖第一部分。请帮助我解决上述问题。实际上,我使用xpath作为注释,如@XmlPath(“subject/title/text()”)私有字符串标题;我不认为数据绑定对混合内容很有效(但其他人可能不同意);字符串表达式=“//主题/字符串(标题)”;nodeList=(nodeList)xPath.compile(expression).evaluate(xmlDocument,XPathConstants.NODESET);“”
@XmlPath('subject/title/text()')
private String title;