У меня есть два node1
и nod2
которых есть разные родительские документы, теперь я хочу позвонить
node1.appendChild(node2);
функция для этих узлов, но мое приложение выходит из строя, ниже вы можете увидеть документы владельца и XML-узлы узлов.
Document document1 = node1.getOwnerDocument();
Document document2 = node2.getOwnerDocument();
Оба узла имеют разные документы владельца. документ владельца node1
описанный ниже
<?xml version="1.0" encoding="UTF-8"?>
<ClientGetOTPSeedMessage>
<UserID>userID</UserID>
<DeviceInfo/>
</ClientGetOTPSeedMessage>
и документ владельца node2
:
<?xml version="1.0" encoding="UTF-8"?>
<Desc>
<Desc1>First name</Desc1>
<Desc2>Second name</Desc2>
</Desc>
Теперь я хочу получить узел </Desc>
из document2
и поместить его в узел <DeviceInfo/>
в document1
как я могу это сделать. И я хочу сказать, что node1
и node2
поддерживают узлы, которые я хочу добавить друг другу, но когда я пишу
node1.appendChild(node2);
мое приложение падает, я думаю, главная причина в том, что у них разные документы владельца.
Причина, по которой происходит сбой приложения, - это, как вы сказали, разные документы владельца (см. Это для более подробной информации). Чтобы решить проблему, вы должны импортировать node2 в document1, например:
n2 = document1.importNode(n2, true);
а потом:
n1.appendChild(n2);
Подробнее об импорте здесь.