Замена вершин в разных документах

При работе с разными 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-представление первого документа до и после замены будут выведены в консоль среды разработки.

См. также:

Сборка XML | Примеры работы с XML-файлами