1
8
看起来这可能是JAXB中的一个“bug”。在源代码中,对marshal()的调用基于输出/编写器类型参数创建不同的编写器:
对于如何处理“空元素”,作者的实现是不同的。以上代码来自: jaxb ri\runtime\src\com\sun\xml\bind\v2\runtime\marshallerimpl.java。 你正在创作的两位作家是: jaxb ri\runtime\src\com\sun\xml\bind\v2\runtime\output\utf8xmlout.java jaxb ri\runtime\src\com\sun\xml\bind\v2\runtime\output\xmlstreamwriteroutput.java |
2
2
好消息是,JAXB是一个具有多个实现的规范(就像JPA)。如果一个实现不能满足您的需求,那么其他实现也可以使用,例如eclipselink jaxb(moxy): |
3
1
我不知道为什么JAXB会这样做——或者即使它是JAXB——例如,如果JAXB通过一个SAXContentHandler输出XML,那么它就无法直接控制生成的标签有多接近。 为了获得一致的行为,可以将输出流包装在OutputStreamWriter中,例如
沿着同一行,您可能会看到如果将StringWriter包装在一个PrintWriter中会发生什么。也许有一些自定义代码可以检测
|
4
0
为什么重要?<tag attribute=“value”></tag>等同于XML中的<tag attribute=“value”/>。 |