Java JAXB和XML规范化

Java JAXB和XML规范化,java,jaxb,marshalling,w3c,Java,Jaxb,Marshalling,W3c,我希望根据 如果我这样写: marshaller.setProperty(marshaller.JAXB_格式化的_输出,Boolean.TRUE) 行吗 如果没有,JAXB能完成这项工作吗?不,根据我的说法,我不会依赖于JAXB\u格式化的\u输出属性。您可以使用您提到的规范中的示例对其进行测试。以下是我的初步答案: 1-文件采用UTF-8编码 默认情况下,JAXB封送到UTF-8编码 2-在解析之前,输入上的换行符标准化为#xA JAXB不保留换行符,因此这实际上不适用 3-属性值被规范化,

我希望根据

如果我这样写:

marshaller.setProperty(marshaller.JAXB_格式化的_输出,Boolean.TRUE)

行吗


如果没有,JAXB能完成这项工作吗?

不,根据我的说法,我不会依赖于
JAXB\u格式化的\u输出
属性。您可以使用您提到的规范中的示例对其进行测试。

以下是我的初步答案:

1-文件采用UTF-8编码

默认情况下,JAXB封送到UTF-8编码

2-在解析之前,输入上的换行符标准化为#xA

JAXB不保留换行符,因此这实际上不适用

3-属性值被规范化,就像由验证处理器一样

您可以在
Unmarshaller
上指定
XmlSchema
,使JAXB实现使用验证处理器:

4-替换字符和已解析的实体引用

大多数JAXB实现将这项工作委托给所使用的底层解析器

5-CDATA节将替换为其字符内容

标准JAXB API不允许封送到CDATA节,因此在这里您可以

6-删除XML声明和文档类型声明(DTD)

JAXB不编写DTD声明。可以通过执行以下操作删除XML声明:

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
7-空元素转换为开始-结束标记对

JAXB不会将空元素作为开始-结束标记对写入。应该能够想出一个解决办法

8-文档元素外部以及开始和结束标记内部的空白被规范化

9-保留字符内容中的所有空白(不包括换行规范化过程中删除的字符)

JAXB实现保留字符内容中的所有空白(在开始/元素标记之间)

10-属性值分隔符设置为引号(双引号)

reference和MOXy-JAXB实现使用双引号作为属性值分隔符

11-属性值和字符内容中的特殊字符替换为字符引用

JAXB将用
替换
&
谢谢:)For:7-如果我创建一个空对象,空元素将转换为开始-结束标记对jaxb write没关系,我想我终于找到了一个库:谁根据w3c提供了规范化