JAXb(版本2.2.8)以错误的格式编组gmonhalls

时间:2014-01-28 13:58:53

标签: java xml jaxb xsd

xsd文件包含以下内容:

<xsd:attribute name="month" type="xsd:gMonth" use="optional"/>

我尝试编组一个有效的XML:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setSchema(schema);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
marshaller.marshal(cv, outWriter);

StringBuffer sb = ((StringWriter) outWriter).getBuffer(); 
xml = sb.toString();

生成的String(xml)包含:month="--03--"而不是month="--03"

我对jaxb的pom.xml依赖是:

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.8-b01</version>
    <scope>provided</scope>
</dependency>

这与此问题有关吗? https://java.net/jira/browse/JAXB-643它本应在2.2.8中得到解决。我怎样才能获得适当的gmonth值?

1 个答案:

答案 0 :(得分:0)

我建议您将FINE日志记录设置为jaxb-impl并尝试设置

 jaxb.ri.useOldGmonthMapping

environement变量。 您应该让日志行描述here,因为对于特定的运行时部署,您实际上可能正在使用2.2.8-b01 jaxb版本。