Что такое интуитивно понятный способ перемещения XmlNode из одного XmlDocument в другой? - PullRequest
3 голосов
/ 08 октября 2008

У меня есть два XmlDocuments, и я хотел бы переместить XmlNode, выбранный из одного из документов, и добавить его в определенное место в другом документе.

Наивно интуитивно понятный подход простого вызова AppendNode (xmlNodeFromDocument1) в соответствующем месте документа 2, конечно, не работает, потому что метод не заботится о манипулировании владельцем документа.

Я наконец нашел ответ буквально, когда писал этот вопрос, но, поскольку нам потребовалось так много времени, чтобы найти его в классах System.Xml, я решил опубликовать его здесь, чтобы помочь кому-то, кто застрял в поиске. это.

1 Ответ

7 голосов
/ 08 октября 2008

Вам необходимо вызвать ImportNode для целевого документа, чтобы получить узел, совместимый с вашим целевым документом. Следующий код иллюстрирует, как это делается в C #.

public void CopyExample()
{

   XmlNode nodeFromDifferentDocument = SelectNodeFromSourceDocument();
   XmlDocument targetDocument = InitializeTargetDocument();
   XmlNode targetParentNode = SelectNodesParentWithinTargetDocument(targetDocument);
   bool shouldDodeepCopy = DoIWantADeepCopy();

   XmlNode copyThatBelongsToTargetDocument = 
      targetDocument.ImportNode(nodeFromDifferentDocument, shouldDoDeepCopy);
   targetParentNode.AppendChild(copyThatBelongsToTargetDocument);

}
...