JAXB:命名空间解散问题



所有,我有一个包含xsdJaxb生成的bean的包装。我想将其中的一些用在另一种豆子中进行元帅/unmarshal xml这样的XML:

<WrongDocument>
    <test>test label</test>
    <CBISDDReqLogMsg xmlns="urn:CBI:xsd:CBISDDReqLogMsg.00.01.00">
        <GrpHdr>
          ....
        </GrpHdr>
        <PmtInf>
        </PmtInf>
    </CBISDDReqLogMsg>
</WrongDocument>

根豆是

@XmlRootElement(name="WrongDocument")
@XmlType(name = "", propOrder = {
  "test",
  "CBISDDReqLogMsg"
})
@XmlAccessorType(XmlAccessType.FIELD)
public class WrongDocumentDTO implements Serializable {
 private static final long serialVersionUID = 8545918230166653233L;
 @XmlElement(required = true, type = String.class, nillable = true)
    protected String test;
 @XmlElement(required = true)
 protected CBISDDReqLogMsg000100 CBISDDReqLogMsg;
 ....
}

CBISDDReqLogMsg000100

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CBISDDReqLogMsg.00.01.00", propOrder = {
    "grpHdr",
    "pmtInf"
})
public class CBISDDReqLogMsg000100
    implements Serializable
{
    private final static long serialVersionUID = 1L;
    @XmlElement(name = "GrpHdr", required = true)
    protected CBIGroupHeader2 grpHdr;
    @XmlElement(name = "PmtInf", required = true)
    protected List<PaymentInstructionInformation2> pmtInf;
    ....
}

CBISDDReqLogMsg000100名称空间是用package-info文件定义的。

这是用于Unmarshalling的代码:

jc = JAXBContext.newInstance(WrongDocumentDTO.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
WrongDocumentDTO wrongDocumentDTO = unmarshaller.unmarshal(source, WrongDocumentDTO.class).getValue();

不幸的是,在我的wrongDocumentDTO内部,我的测试字段填充了正确的值,但是CBISDDReqLogMsg为null。

如何解决此问题?

预先感谢您

如果整个package默认,则需要在element上专门指定名称空间。

@XmlElement(required = true, namespace = "urn:CBI:xsd:CBISDDReqLogMsg.00.01.00")
protected CBISDDReqLogMsg000100 CBISDDReqLogMsg;

最新更新