Что такое интуитивно понятный способ перемещения XmlNode из одного XmlDocument в другой?
-
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);
}