JAXB使用多命名空间解组

问题描述 投票:0回答:1

我有第三部分的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,始终为null。

[element=null, text=TEST]

那我该怎么办?

jaxb marklogic jaxb2 marklogic-8
1个回答
0
投票

这个:

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

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

你的映射:

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

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

如果你有兴趣让_1:Entitlement_1绑定到entitlement:AAAentitlement:BBB,请将元素的类型更改为QName

© www.soinside.com 2019 - 2024. All rights reserved.