0

我正在尝试将一个子类编组为超类,并将 xsi:type 信息作为 XML Root 元素属性。

目前这就是我所拥有的(比如说..):

  • XMLDOCUMENTTYPE 是 XMLINVOICETYPE 的超类
  • 编组 XMLINVOICETYPE 会给我<xmlInvoiceType>
  • 将 XMLINVOICETYPE 实例转换为 XMLDOCUMENTTYPE 实例然后编组它仍然会给我<xmlInvoiceType>
  • 创建一个带有 JAXB 注释的包装器对象似乎可以解决问题,但现在我必须抓住第一个子节点

例如:

jaxbWrapper.setXmlDocumentType(xmlInvoiceTypeInstance);

// 可以解决问题,但需要额外的根

我想得到如下:

<XMLDOCUMENTTYPE ... ... xsi:type="XML_INVOICE_TYPE">
</XMLDOCUMENTTYPE>

知道怎么做吗?

4

2 回答 2

2

尝试编组:

new JAXBElement(new QName("XMLDOCUMENTTYPE"), XMLDOCUMENTTYPE.class, xmlInfoiceTypeInstance)
于 2011-06-08T18:25:48.440 回答
0

xsi:type 仅在类型与类不匹配时才呈现。

试试这个:

// create the type and add childs and attributes ...
XmlInVoiceType xmlInVoice = new XmlInVoiceType();
// map the element to object to force xsi:type 
final JAXBElement<?> object = new JAXBElement<>(new QName("http://your/namespace/xmlinvoice", "xmlinvoice"), Object.class, xmlInVoice);
于 2015-01-14T09:32:29.330 回答