【发布时间】:2021-10-06 10:57:50
【问题描述】:
我正在使用 Jaxb Marshaller 将 java 对象转换为 xml,并将 Marshaller.JAXB_FORMATTED_OUTPUT 设置为 true。这给了我以下格式的 xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
<time>20210716124226</time>
<details>
<employee id="100" time="20210716124212">
<name>asd</name>
<empid>1</empid>
<jobCategory>Contract</jobCategory>
</employee>
<employee id="102" time="20210716124212">
<name>ative</name>
<empid>2</empid>
<jobCategory>Permanent</jobCategory>
</employee>
</details>
</xml>
但要求是生成以下格式的xml,没有缩进:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
<time>20210716124226</time>
<details>
<employee id="100" time="20210716124212"><name>xyz</name><empid>1</empid><jobCategory>Contract</jobCategory></employee>
<employee id="102" time="20210716124212"><name>abc</name><empid>2</empid><jobCategory>Permanent</jobCategory></employee>
</details>
</xml>
如何使用 java 实现这个结果?
【问题讨论】:
-
您可以删除命令以格式化:
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);这将提供结果作为文本而不是带有适当缩进的 XML,以便我们更容易阅读。如果您想以您提供的精确缩进显示 XML,那么您必须编写自定义缩进。但我不认为有必要为什么你不想有缩进,这会让你更容易阅读,对吧?此外,它不会对您的 XML 内容进行任何更改。 -
问题是这个 xml 文件将被客户端应用程序用作输入数据源,并且该应用程序是旧应用程序,它接受输入 xml 文件格式作为我在上面在要求中提到的格式.由于合规性和监管条件,我无法访问客户端应用程序,因此我并不真正了解它的实现以及它在内部是如何工作的。而且他们还没有准备好接受标准/默认格式的 xml 文件,并要求我按照他们的期望对其进行自定义。
-
向我们展示您用于编写该 xml 的代码。看来您需要在 POJO 上添加一些注释。