アプリ版:「スタンプのみでお礼する」機能のリリースについて

C# WPF でプログラミングをしています。

TreeView に XML の階層構造を表示させて、ある項目を選択し、ボタンをクリックするとその項目の子ノードが追加されるようにするプログラムを作っています。

選択した項目(TreeView.SelectedItem(Object型)) を、DOMツリーの要素ノード (XmlElement型) にキャストし、それに新しく作った要素ノード(XmlElement型)をつなげるといったようにしているのですが、その際「挿入するノードは、異なるドキュメント コンテキストのものです。」のエラーが発生してしまいます。

XmlElement tvi = treeView.SelectedItem as XmlElement;
XmlElement item = doc.CreateElement("item");
tvi.PrependChild(item); // エラー発生箇所

※ doc は XmlDocument のインスタンスです。

解決策を教えてください。よろしくお願いします。

A 回答 (1件)

TreeViewで試してないので自信なし。



例外出るの。
https://ideone.com/fQ04I
こうすると出ないの。
https://ideone.com/e3HEI

この回答への補足

回答ありがとうございます。
XmlDocument.ImportNodeを通すことでエラーはでなくなりましたが、今度はXMLにはなにも書き込まれなくなってしまいました。

改良したコードはこんな感じです。

XmlDocument doc = new XmlDocument();

doc.Load("");

XmlElement tvi = treeView.SelectedItem as XmlElement;
XmlNode r = doc.ImportNode(tvi, true);
XmlElement item = doc2.CreateElement("item");
r.PrependChild(item);

doc.Save("");

どうすればいいのでしょうか?何度も申し訳ありませんがよろしくお願いします。

補足日時:2011/02/25 14:44
    • good
    • 0
この回答へのお礼

解決しました。

新しく XmlDocument を定義して Import するのではなく、
SelectedItem の OwnerDocument をそのまま操作することで目的を達成できました。

ありがとうございました。

お礼日時:2011/02/25 22:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!