我从某个API(不在JDK中)收到Document
(DOM树)。不幸的是,Document
不支持命名空间。就我所知,DOM一旦生成,名称空间感知就不能在之后“添加”。Java + DOM:如何将没有名称空间的DOM树转换为支持名称空间的DOM树?
使用Transformer将此Document转换为字符串时,XML是正确的。元素具有xmlns:...
属性和名称前缀。但是从DOM的角度来看,没有名称空间也没有前缀。
我需要能够将此Document
转换为新的Document
,其中是名称空间感知。是的,我可以通过将其转换为字符串并返回到启用了命名空间的DOM来完成此操作。
但是:原始树的节点设置了用户对象。转换为字符串并返回将使这些用户对象映射到新的Document
非常复杂(如果不是不可能的话)。所以我真的需要一种方法将非命名空间DOM转换为命名空间DOM。
对此有没有更多或更简单的解决方案?
最坏情况(就是我希望避免)会通过老Document
树手动循环,并创建新的命名空间感知Node
每个老Node
。这样做,必须手动“解析”命名空间前缀,注意xmlns
-属性,并维护前缀和名称空间-URI之间的映射。很多事情都会出错。
你有没有在这方面取得进一步的进展?我有类似的情况。 – mrswadge 2014-09-04 11:55:35