以下是有效的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
属性吗?
答案 0 :(得分:0)
您是否在编组之前在Input对象上设置版本值?猜测没有看到你的java bean,但是version属性被映射到你的Input元素实现的一个字段。