Я получаю Document
(дерево DOM) от определенного API (не в JDK).К сожалению, это Document
не учитывает пространство имен.Насколько я знаю, DOM, однажды сгенерированный, впоследствии не может «добавить» информацию о пространстве имен.
При преобразовании этого документа с использованием Transformer в строку XML является правильным.Элементы имеют xmlns:...
атрибуты и префиксы имен.Но с точки зрения DOM нет никаких пространств имен и префиксов.
Мне нужно иметь возможность преобразовать этот Document
в новый Document
, который * поддерживает пространство имен,Да, я мог бы сделать это, просто преобразовав его в строку и обратно в DOM с включенными пространствами имен.
Но : для узлов исходного дерева установлены пользовательские объекты.Преобразование в строку и обратно сделало бы сопоставление этих пользовательских объектов новым Document
очень сложным, если не невозможным.Поэтому мне действительно нужен способ преобразования DOM без пространства имен в DOM пространства имен.
Существуют ли более или менее простые решения для этого?
Худший случай (что яя надеюсь избежать) будет вручную перебирать старое дерево Document
и создавать новые Node
с учетом пространства имен для каждого старого Node
.Для этого нужно было вручную «анализировать» префиксы пространства имен, следить за xmlns
-атрибутами и поддерживать соответствие между префиксами и URI пространства имен.Много чего не получается.