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に追加したいのですが、どのようにすれば良いでしょうか?
Set ステートメントが無いところをみると、それは VB.NET のコードですよね。
こちらは VB2-VB6専用の掲示板になっています。
VB.NET に関する話題は、隣の掲示板でお願いいたします。
また、質問時には VBのバージョンも書くようにしましょう。
上位のバージョンでは、利用可能なコードの幅が広がる可能性がありますので。
> AppendChildの所で「挿入するノードは、異なるドキュメント コンテキストのものです。」が発生します。
ドキュメントが異なるからです。
> どのようにすれば良いでしょうか?
DO_AddNode = DO_XmlDoc1.ImportNode(DO_RootElement2.ChildNodes(DI_Cnt01), True)
失礼致しました。
てっきり.NET用の掲示板と思い込んでいました。
また、バージョンの未記載も失礼致しました。
使用バージョンはvb.net 2008です。
>DO_AddNode = DO_XmlDoc1.ImportNode(DO_RootElement2.ChildNodes(DI_Cnt01), True)
ご回答ありがとうございます。
ImportNodeは気がつきませんでした。
早速試してみます。
また、こちらは掲示板が異なるので一旦解決にさせて頂きます。
ツイート | ![]() |