Я считаю, что результат, который вы пытаетесь создать, будет следующим:
<doc>
<branch name="release01" hash="f200013e">
<sub-branch name="subrelease01">
xml,sgml
</sub-branch>
</branch>
<branch name="release01" hash="f200013e">
<sub-branch name="subrelease01">
xml,sgml
</sub-branch>
</branch>
</doc>
Ошибка, которую вы делаете, заключается в том, что вы добавляете свою копию ref
к элементам, которые составляют сам ref
, а не помещать вашу копию после ref
(т. е. вы хотите, чтобы копия была родственной ref
, а не дочерней). Чтобы добиться желаемого поведения, вам нужно добавить свою копию ref к родительскому элементу ref
, это может быть достигнуто с помощью метода getparent()
, а затем с помощью append()
или, что еще более удобно, вы можете напрямую использовать элемент addnext()
метод.
т.е. заменить ref.append(copy)
на ref.addnext(copy)
addnext Справочник по API