JAXB解组多名称空间

时间:2018-09-13 03:06:16

标签: jaxb marklogic jaxb2 marklogic-8

我有一个来自第三部分的xml。

<cts:element-value-query weight="0">
   <cts:element xmlns:_1="entitlement:AAA">_1:Entitlement</cts:element>
   <cts:text xml:lang="en">TEST</cts:text>
</cts:element-value-query>

或:

<cts:element-value-query weight="0">
   <cts:element xmlns:_1="entitlement:BBB">_1:Entitlement</cts:element>
   <cts:text xml:lang="en">CASE</cts:text>
</cts:element-value-query>

我想将XML解组到Java bean:

@XmlRootElement(name = "element-value-query", namespace= "http://marklogic.com/cts")
@XmlAccessorType(XmlAccessType.FIELD)
public class Query4ElementValue {

@XmlElement(name= "element", namespace="entitlement:AAA")
private String element;

private String text;
}

我可以获得正确的文本值,但是对于element,始终为空。

[element=null, text=TEST]

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

此:

<cts:element xmlns:_1="entitlement:AAA">_1:Entitlement</cts:element>

element命名空间中名称为cts的元素。

您的映射:

@XmlElement(name= "element", namespace="entitlement:AAA")
private String element;

在带有URI element的命名空间中期望名称为entitlement:AAA的元素。可能不是您提供的cts名称空间。

如果您对将_1:Entitlement绑定到_1entitlement:AAA的{​​{1}}感兴趣,请将元素的类型更改为entitlement:BBB