- PR -

XMLを合体したい

1
投稿者投稿内容
ron
常連さん
会議室デビュー日: 2005/03/01
投稿数: 35
投稿日時: 2005-03-18 17:16
お世話になってます、ronです。

Delphi2005の.NETモードで作成しています。

XMLドキュメントを作成するプログラムを作っているのですが、一気に作るとミスが出るような気がして、部分部分を作ってあとでつなぎ合わせようと思っていました。

が、全然うまくいきません。(^^;;;

それで単純なXMLファイルを作って実験していますが、症状は同じ物が出ます。作ったXMLは以下のような物です。
Sample1.XML <hoehoe>
<hogehoge>1</hogehoge>
</hoehoe>

Sample2.XML <hoehoe>
<hogehoge>2</hogehoge>
<hogehoge>3</hogehoge>
</hoehoe>
これらを足しあわせて以下のような物を作りたいと考えています。
SampleX.XML <hoehoe>
<hogehoge>1</hogehoge>
<hogehoge>2</hogehoge>
<hogehoge>3</hogehoge>
</hoehoe>

コードは以下のように書いてみました。

 xmlDoc1 := XmlDocument.Create;
xmlDoc1.Load('Sample1.XML');
Elem1 := xmlDoc1.DocumentElement;

xmlDoc2 := XmlDocument.Create;
xmlDoc2.Load('Sample2.XML');
Elem2 := xmlDoc2.DocumentElement;

Node2 := xmlDoc2.ImportNode(Elem2.LastChild,True);
Elem1.AppendChild(Node2);

xmlDoc1.save('SampleX.XML');

が、このコードを実行すると、「挿入するノードは、異なるドキュメントコンテキストのものです」というエラーがでて、話が全然先に進みません。

MSのサンプルコードを見る限り動くはずなんですが、現実は厳しいみたいです。

Atsushi.Eno
ベテラン
会議室デビュー日: 2003/04/23
投稿数: 60
投稿日時: 2005-03-18 23:10
> Node2 := xmlDoc2.ImportNode(Elem2.LastChild,True);

xmlDoc1.ImportNodeの間違いですね。
ron
常連さん
会議室デビュー日: 2005/03/01
投稿数: 35
投稿日時: 2005-03-22 10:09
ご返答ありがとうございます、単純なコーディングエラーだったようですね。
(^^;;;

Node2にSample2.xmlの内容をコピーして、それをSample1.xmlに足し込むような認識でいました。教えていただいてアレなんですが、なんかこう、いまいちしっくりきません。

XMLの奥は深いようです。

1

スキルアップ/キャリアアップ(JOB@IT)