如何在读/写过程中保留xml文档中的doctype信息?

时间:2010-08-18 07:32:21

标签: java xml

我正在读取一个xml文档,插入一个元素然后编写它。在此过程中,文档丢失了doctype和dtd信息。通过“Transformer”类我可以设置OutputProperties,但我的要求是插入或更新一些元素,而不是使用doctype。 有人可以给我一个暗示吗?

1 个答案:

答案 0 :(得分:1)

来自Example Depot的帖子:

  

默认情况下,使用转换器将DOM文档转储到XML文件时不会写入DOCTYPE。此示例演示如何编写具有公共和系统标识的DOCTYPE。不幸的是,无法编写带有内部DTD的DOCTYPE。

referenced article包含此示例。

以下是来自有同样问题的人的another code snippet,遗憾的是这个问题并不完整(论坛是用德语写的,但这里的论坛文字无关紧要)但也许你可以完成遗漏的步骤。< / p>

修改

真正丑陋的黑客/解决方法 - 但也许是解决问题的唯一方法:

  1. 将完整的doctype声明从输入文档复制到String
  2. 在文档的最开头向DOM添加“标记注释”(如<!-- DOCTYPE -->
  3. 将文档序列化为另一个字符串
  4. 使用保存的原始doctype声明
  5. 查找并替换'标记注释'