Что такое интуитивно понятный способ перемещения XmlNode из одного XmlDocument в другой?

StackOverflow https://stackoverflow.com/questions/184486

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Вам нужно вызвать 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);

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top