我想克隆一个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复制到音乐文件夹中,因此所需的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
问题
有人能帮我解决第二个和第四个问题吗?