java - 如何从 Java XML DOM 中的 DTD 强制删除具有隐含默认值的属性
问题描述
正如我在 Stack Overflow 上其他地方所报道的那样,我正在解析一个遗留的模块化 XHTML 1.1 文档,并且 DTD 正在添加各种默认属性,例如version="-//W3C//DTD XHTML 1.1//EN"
. 其中一些甚至是不合适的,例如xml:space="preserve"
.
我正在编写一个实用程序来在解析后清理 DOM,但我忘记了如果我删除它们,DOM 会自动从 DTD 中添加回默认属性。Element.removeAttributeNS(null, "version")
因此,例如,如果我调用文档元素,它只会添加回来version="-//W3C//DTD XHTML 1.1//EN"
,然后我又回到了开始的地方。
即使 DTD 指示该属性具有隐含值,如何强制 Java 中的 DOM 删除属性?或者我怎样才能从 DOM 树中更改/删除 DTD,以便隐含属性不会自动显示?
我成功地创建了一个没有 DTD 的新的空文档;导入旧文档元素及其后代;然后用导入的元素树替换新文档中的根元素,但是这样开销很大,效率也太低了。是否有更有效的解决方法或解决方案?
解决方案
推荐阅读
- javascript - 如何从函数返回值以使用它并在 Nodejs 的路由器中响应它?
- delphi - 将文本文件中的字符串读入 Pascal 中的数组
- node.js - Node Express && HTTP Desync Attacks, 请求走私
- amazon-web-services - 想要将数据从一个 AWS 账户复制到不同的 AWS 账户(文件大小超过 5 GB)
- html - 如何在 HTML 中为 Tooltip> 的指针添加阴影
- algorithm - 如何做到这一点嵌套的循环时间复杂度?
- javascript - 未捕获的错误引导需要 jquery 在 bootstrap.min.js
- jquery - 取消选择后无法再次选择选项
- laravel - Laravel 测试文件下载总是失败
- node.js - 谷歌助理会话实体有时工作有时不工作.. nodejs