При работе с разными XML-документами может возникнуть необходимость переноса вершин из одного документа в другой. Для этого вершину требуется найти в первом документе и добавить во второй с помощью метода appendChild интерфейса IXmlDomNode. Если требуется не просто добавить вершину, а заменить существующую, то используйте метод replaceChild. При этом вершина, на которую осуществляется замена, предварительно также должна быть добавлена в целевой документ с помощью метода appendChild.
Sub TestReplace;
Var
doc1, doc2: IXMLDOMDocument2;
node1, node2: IXmlDomNode;
root1, root2: IXMLDOMElement;
Begin
// Первый документ
doc1 := New DOMDocument.Create;
doc1.loadXML("<doc><node1/></doc>");
root1 := doc1.documentElement;
node1 := root1.selectSingleNode("node1");
Debug.WriteLine("Doc1 before: " + doc1.xml);
// Второй документ
doc2 := New DOMDocument.Create;
doc2.loadXML("<doc><node2/></doc>");
root2 := doc2.documentElement;
node2 := root2.selectSingleNode("node2");
// Замена вершины в первом документе вершиной из второго документа
root1.appendChild(node2);
root1.replaceChild(node2, node1);
Debug.WriteLine("Doc1 after: " + doc1.xml);
// Освобождение переменных
Dispose doc1;
Dispose doc2;
End Sub TestReplace;
В указанном примере формируются два новых XML-документа из символьной строки. Для замены имеющейся в первом документе вершины в него добавляется вершина из второго документа. После этого осуществляется замена. XML-представление первого документа до и после замены будут выведены в консоль среды разработки.
См. также: