XMLでノードを追加したい

解決


ヴェス  2013-02-18 13:39:13  No: 103410  IP: [192.*.*.*]

1.xmlファイルに2.xmlファイルの内容を追加しようとしています。
1.xmlの内容は、
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<EditObjects>
  <Line>
    <bymethod>False</bymethod>
    <x1>233</x1>
    <y1>132</y1>
    <x2>784</x2>
    <y2>497</y2>
    <penwidth>10</penwidth>
    <pencolor_a>255</pencolor_a>
    <pencolor_r>0</pencolor_r>
    <pencolor_g>0</pencolor_g>
    <pencolor_b>0</pencolor_b>
    <doubleline>False</doubleline>
  </Line>
</EditObjects>
で2.xmlの内容は
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<EditObjects>
  <Rectangle>
    <bymethod>False</bymethod>
    <rect_left>186</rect_left>
    <rect_top>674</rect_top>
    <rect_right>619</rect_right>
    <rect_bottom>974</rect_bottom>
    <penwidth>10</penwidth>
    <pencolor_a>255</pencolor_a>
    <pencolor_r>0</pencolor_r>
    <pencolor_g>0</pencolor_g>
    <pencolor_b>0</pencolor_b>
    <brushcolor_a>255</brushcolor_a>
    <brushcolor_r>128</brushcolor_r>
    <brushcolor_g>255</brushcolor_g>
    <brushcolor_b>255</brushcolor_b>
    <fill>False</fill>
    <angle>0</angle>
    <image_filename />
    <aspectratio>True</aspectratio>
  </Rectangle>
</EditObjects>
です。

コードは以下です。
Dim DO_RootElement1 As Xml.XmlElement
Dim DO_RootElement2 As Xml.XmlElement
Dim DO_AddNode As Xml.XmlNode

DO_XmlDoc1.Load("c:\1.xml")  'XMLファイル読込
DO_XmlDoc2.Load("c:\2.xml")  'XMLファイル読込
DO_RootElement1 = DO_XmlDoc1.DocumentElement    'ルートエレメント設定
DO_RootElement2 = DO_XmlDoc2.DocumentElement    'ルートエレメント設定
For DI_Cnt01 = 0 To DO_RootElement2.ChildNodes.Count - 1
    DO_AddNode = DO_RootElement2.ChildNodes(DI_Cnt01).Clone
    DO_RootElement1.AppendChild(DO_AddNode)
Next
DO_XmlDoc1.Save("c:\1.xml")

としているのですが、AppendChildの所で「挿入するノードは、異なるドキュメント コンテキストのものです。」が発生します。
恐らく色々と考え違いしているのではないかと思うのですが、要は<Rectangle>の内容全てを別のxmlに追加したいのですが、どのようにすれば良いでしょうか?

編集 削除
魔界の仮面弁士  2013-02-28 16:33:36  No: 103411  IP: [192.*.*.*]

Set ステートメントが無いところをみると、それは VB.NET のコードですよね。

こちらは VB2-VB6専用の掲示板になっています。
VB.NET に関する話題は、隣の掲示板でお願いいたします。

また、質問時には VBのバージョンも書くようにしましょう。
上位のバージョンでは、利用可能なコードの幅が広がる可能性がありますので。


> AppendChildの所で「挿入するノードは、異なるドキュメント コンテキストのものです。」が発生します。
ドキュメントが異なるからです。

> どのようにすれば良いでしょうか?
DO_AddNode = DO_XmlDoc1.ImportNode(DO_RootElement2.ChildNodes(DI_Cnt01), True)

編集 削除
ヴェス  2013-02-28 16:40:44  No: 103412  IP: [192.*.*.*]

失礼致しました。
てっきり.NET用の掲示板と思い込んでいました。
また、バージョンの未記載も失礼致しました。

使用バージョンはvb.net 2008です。

>DO_AddNode = DO_XmlDoc1.ImportNode(DO_RootElement2.ChildNodes(DI_Cnt01), True)
ご回答ありがとうございます。
ImportNodeは気がつきませんでした。
早速試してみます。

また、こちらは掲示板が異なるので一旦解決にさせて頂きます。

編集 削除