【发布时间】:2015-01-19 23:32:01
【问题描述】:
我正在为一个客户做一个项目,我必须读取 XML 文件、分析它们、在需要时进行一些更正并再次将它们写出来。 我使用 JAXB 来解决这个问题,只需解组文件,处理生成的对象并在完成后将对象编组回文件。
遗憾的是,我的客户要求不应更改 XML 文件,除非我的程序有意更改的部分。 这会导致麻烦,因为 JAXB 在编组时会更改 XML 文件,例如通过更改属性的顺序或将名称空间的定义向上移动到 XML 结构的根元素。
我是否可以更改 JAXB 编组器的输出以符合客户的期望?或者,如果 JAXB 无法实现这一点,是否有任何 Java 的替代 XML 库可以尽可能地保留 XML 文件? 我目前正在尝试为此使用 DOM 和 SAX,但让它们像我想要的那样工作似乎很麻烦......
【问题讨论】:
-
属性顺序无关紧要,因此不支持对其进行控制,请参阅community.oracle.com/thread/977397。
-
问题不在于工具,而在于更多的 XML 本身。对于同一个文档,允许有许多不同的表示(对于空节点、空格等)。对客户来说最便宜的方法是给他培训。
标签: java xml jaxb marshalling unmarshalling