Forum > General

How to merge a nodes from two different xml files using DOM library

(1/1)

Wujek:
I have been looking for a way to merge two different xml files in one file, or move a node from one to another. It is possible using DOM ? If yes, please give me an example.

Regards
Zbig

Leledumbo:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---{$mode objfpc}{$H+} uses  Classes, SysUtils, DOM, XMLRead, XMLWrite; const  XMLHeader = '<?xml version="1.0"?>'; var  ss1,ss2: TStringStream;  xml1,xml2: TXMLDocument;  node,impNode: TDOMNode;begin  try    ss1 := TStringStream.Create(XMLHeader + '<root><node attr="value">text</node></root>');    ss2 := TStringStream.Create(XMLHeader + '<root></root>');     WriteLn('BEFORE:');    WriteLn('XML 1: ' + ss1.DataString);    WriteLn('XML 2: ' + ss2.DataString);     ReadXMLFile(xml1,ss1);    ReadXMLFile(xml2,ss2);     node := xml1.DocumentElement.FirstChild;   // xm1.root.node    impNode := xml2.ImportNode(node,true);     // import a.k.a clone + assign new owner document    xml2.DocumentElement.AppendChild(impNode); // make it a new child of xml2.root    xml1.DocumentElement.RemoveChild(node);    // remove from xml1.root     // stream position will be at the string end after ReadXMLFile above, so we need to    // reset it to the initial position, otherwise it will be appended instead of overwritten    ss1.Seek(0, soBeginning);    ss2.Seek(0, soBeginning);    WriteXMLFile(xml1,ss1);    WriteXMLFile(xml2,ss2);     WriteLn();    WriteLn('AFTER:');    WriteLn('XML 1: ' + ss1.DataString);    WriteLn('XML 2: ' + ss2.DataString);  finally    xml1.Free;    xml2.Free;    ss1.Free;    ss2.Free;  end;end. Merging is just a variation of this, I'll leave that as an exercise for you.

Navigation

[0] Message Index

Go to full version