Скажем, у меня есть dom-узел, например:
org.w3c.dom.Элементный узел:
<node id="101">
<node id="102">
<node id="103" />
</node>
<node id="104">
<node id="103" />
</node>
</node>
Чтобы преобразовать атрибут id, я сделал бы следующее в моем коде Java:
String nodeId = node.getAttribute("id");
String newNodeId = "prefix/" + nodeId;
node.getAttributeNode("id").setValue(newNodeId);
Вышеуказанный узел затем преобразуется в:
<node id="prefix/101">
<node id="102">
<node id="103" />
</node>
<node id="104">
<node id="103" />
</node>
</node>
Но я хочу рекурсивно изменить все подузлы. Ожидаемый преобразованный узел:
<node id="prefix/101">
<node id="prefix/102">
<node id="prefix'103" />
</node>
<node id="prefix/104">
<node id="prefix/103" />
</node>
</node>
Я мог бы пройти через дочерние узлы, но тогда у узла может быть несколько уровней дочерних. В этом случае корень имеет два подуровня. Но если есть больше подуровней, то циклически проходить по дочерним узлам каждого уровня кажется немного неловким. Есть ли более прямой подход к решению этой задачи?
Спасибо,
Sony