如何在编组时在输出中包含版本属性

时间:2015-03-11 18:26:16

标签: java xml xsd jaxb

以下是有效的xml。

<Input xsi:noNamespaceSchemaLocation="some.xsd" 
       version="V16.2" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SITE>com</SITE>
<LANGUAGE>SV</LANGUAGE>
</Input>

我从XSD到JAXB然后使用Marshallar获取的XML是:

<Input xsi:noNamespaceSchemaLocation="some.xsd" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <SITE>com</SITE>
    <LANGUAGE>SV</LANGUAGE>    
</Input>

问题是第二个生成的XML中缺少version="V16.2",因此消费代码会抛出错误。

我的Marshaller财产

Marshaller marshaller= jaxbContext.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "some.xsd");

任何人都可以帮我弄清楚如何包含version属性吗?

1 个答案:

答案 0 :(得分:0)

您是否在编组之前在Input对象上设置版本值?猜测没有看到你的java bean,但是version属性被映射到你的Input元素实现的一个字段。