【发布时间】:2025-12-20 16:15:11
【问题描述】:
我从某个 API(不在 JDK 中)收到 Document(DOM 树)。可悲的是,这个Document 不支持命名空间。据我所知,DOM一旦生成,之后就不能“添加”命名空间感知。
当使用 Transformer 将此文档转换为字符串时,XML 是正确的。元素具有xmlns:... 属性和名称前缀。但从 DOM 的角度来看,没有命名空间,也没有前缀。
我需要能够将这个Document 转换成一个新的Document,它是 命名空间感知的。是的,我可以通过将其转换为字符串并返回启用命名空间的 DOM 来做到这一点。
但是:原始树的节点设置了用户对象。转换为字符串并返回将使这些用户对象到新的Document 的映射非常复杂,如果不是不可能的话。所以我真的需要一种将非命名空间 DOM 转换为命名空间 DOM 的方法。
对此有或多或少直接的解决方案吗?
最坏的情况(我希望避免的)是手动遍历旧的Document 树并为每个旧的Node 创建新的命名空间感知Node。这样做,必须手动“解析”命名空间前缀,注意xmlns-attributes,并维护前缀和命名空间-URI 之间的映射。很多事情都会出错。
【问题讨论】:
-
你有没有在这方面取得任何进一步的进展?我也有类似的情况。
标签: java xml dom namespaces xml-namespaces