Xml 要素のクローンを作成し、それを要素リストの最後に挿入して、ドキュメントを保存したいと考えています。linq to xmlでそれがどのように行われるかを誰かが説明できますか
XML
<Folders>
<Folder ID="1" Name="Music" PathValue="Root/Music" ParentId="0"></Folder>
<Folder ID="2" Name="Rock" PathValue="Root/Rock" ParentId="1"></Folder>
</Folders>
環境
xml 要素 Folder をディスク上の仮想フォルダーと考えてください。フォルダー Rock を music にコピーしたいので、結果の xml は次のようになります。
結果必須
<Folders>
<Folder ID="1" Name="Music" PathValue="Root/Music" ParentId="0"></Folder>
<Folder ID="2" Name="Rock" PathValue="Root/Rock" ParentId="0"></Folder>
<Folder ID="3" Name="Rock" PathValue="Root/Music/Rock" ParentId="1"></Folder>
</Folders>
実行する操作
- ソース ノードのクローンを作成します (完了 #1)。
- ソースノード内の他のノードのクローンを作成します (方法がわからない #2)
- #2内のノードの新しいIDを生成し、パス値を変更します(これを行う方法を知っています)
- ノード#1 と#2 のノードを挿入(不明)
1
var source = new XElement((from folder in _xmlDataSource.Descendants("Folders").Descendants("Folder") where
wallet.Attribute("ID").Value.Equals(sourceWalletId, StringComparison.OrdinalIgnoreCase) select wallet).First());
//source is a clone not the reference to node.
2
var directChildren = (from folder in _xmlDataSource.Descendants("Folders").Descendants("Folder") where folder.Attribute("PathValue").Value.Contains(sourcePathValue) select folder);
//How do i clone this
質問
誰かが#2と#4で私を助けてくれませんか?