Jdom订单文件就像DTD一样

时间:2015-12-07 10:16:40

标签: java xml dtd jdom

我有一个XML文档,DTD正确验证了该文档。然后,我添加一些符合其定义的规则的元素,并生成新文档。但是我添加的元素没有像在DTD中定义的那样排序。有没有办法让jdom自动订购新生成的文档的元素(不用addContent(int index, Content child)手动执行)?

1 个答案:

答案 0 :(得分:1)

不,JDOM没有原生的DTD排序机制。

当JDOM读取/解析文档时,DTD验证由底层解析器完成(xerces,无论如何),解析结果将提供给JDOM。

其重要性在于JDOM实际上并不知道哪些元素受DTD中哪些组件的影响。 "业务逻辑"在DTD中不能直接访问,并且不直接"链接"到实际的JDOM元素和属性。

JDOM不会尝试针对任何DTD或架构验证任何内容更改 - 添加元素或属性,删除元素或属性,更改其内容 - 这些都可能导致XML文档无效。 JDOM只适用于#34;格式良好的#34;而不是"已验证的#34; XML领域。验证仅用于解析。

现在,如果您确切知道DTD的哪个部分会影响特定元素(哪个序列),那么您可以将Element.sortChildren(...)机制与适当的比较器一起使用