我正在尝试使用 contains 函数通过带有 XPath 的 EclipseLink MOXy 解组 XML 数据流。
当我将示例 XPath 直接应用于示例 XML 数据流时,我得到了正确的返回值 (Ref_number_1)。但是,当我使用 MOXy 解组它时,为 refNumber1 设置的值是“Ref_number_2”。
MOXy 不支持这种类型的 XPath 吗?看起来它至少可以理解它,因为它没有抛出错误,只是设置了错误的值。
有没有人有这种事情的经验?知道更好的方法吗?
谢谢你的帮助。
元帅代码:
String s = //xml stream from restful service (see xml example below);
StringReader sr = new StringReader(s);
ReferenceNumber refNum = (ReferenceNumber)marshaller.unmarshal(
new StreamSource(sr));
会员注释:
@XmlPath("Header/ReferenceNumbers/ReferenceNumber[contains(ReferenceNumberType, \"REF_NUMBER_TYPE_1\")]/ReferenceNumber/text()")
private String refNumber1;
XML 数据:
<?xml version="1.0" encoding="UTF-8"?>
<Document>
<Header>
<ReferenceNumbers>
<ReferenceNumber>
<ReferenceNumber>Ref_number_1</ReferenceNumber>
<ReferenceNumberType>REF_NUMBER_TYPE_1</ReferenceNumberType>
</ReferenceNumber>
<ReferenceNumber>
<ReferenceNumber>Ref_number_2</ReferenceNumber>
<ReferenceNumberType>REF_NUMBER_TYPE_2</ReferenceNumberType>
</ReferenceNumber>
</ReferenceNumbers>
</Header>
</Document>