Java 在读/写过程中,如何在xml documnet中保留doctype信息?

Java 在读/写过程中,如何在xml documnet中保留doctype信息?,java,xml,Java,Xml,我正在阅读一个xml文档,插入一个元素,然后编写它。在此过程中,文档将丢失doctype和dtd信息。通过“Transformer”类,我可以设置OutputProperties,但我的要求是插入或更新一些元素,而不是使用doctype。 有人能给我一个提示吗?来自以下网址: 默认情况下,当使用转换器将DOM文档转储到XML文件时,不会写入DOCTYPE。此示例演示如何使用公共和系统id编写DOCTYPE。遗憾的是,无法使用内部DTD编写DOCTYPE 中包含此示例 这是一个有同样问题的人写的,

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

来自以下网址:

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

中包含此示例

这是一个有同样问题的人写的,不幸的是,这个问题并不完整(论坛是德语的,但这里的格式文本是不相关的),但也许你可以完成遗漏的步骤

编辑

一个真正丑陋的破解/解决方法-但可能是解决您问题的唯一方法:

  • 将完整的doctype声明从输入文档复制到字符串
  • 在文档的开头向DOM添加“标记注释”(如
  • 将文档序列化为另一个字符串
  • 查找“标记注释”,并将其替换为保存的原始doctype声明

  • 谢谢安德烈亚斯的帮助。我只需要编写公共和系统ID,而不需要编写内部DTD。所以引用的例子很好地解决了我的问题