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