使用索引选择XML元素

时间:2012-05-29 15:11:27

标签: c# xml winforms linq-to-xml

我有以下格式的XML文件;

<root>

<entry>
<details>
</entry>

<entry>
<details>
</entry>
...
</root>

我没有任何属性,我在ListBox控件中显示详细信息字段,允许复制和删除项目。

因此,如果用户删除列表框中的第二个条目,则需要完全删除xml文件中的第二个条目。

有办法做到这一点吗?

目前,我正在使用Linq-to-XML来编写数据。

编辑:我忘了提及ListBox的选择模式 - 它是MultiExtended。

2 个答案:

答案 0 :(得分:3)

这是加载的简单代码,删除索引条目,然后保存文件。

XElement root = XElement.Load(file);
root.Elements("entry").ElementAt(index).Remove();
root.Save(file);

匹配多个:

int[] match = new int[] { 1, 10, 25, 33 };
var matches = root.Elements("entry").Where((x, i) => match.Contains(i));
foreach (var e in matches.ToList()) e.Remove();

答案 1 :(得分:2)

这是一个非常宽松的定义,但以下应该有效:

// untested
var entries = xDoc.Root.Elements("entry").ToList();
entries[selectedIndex].Remove();
xDoc.Save(...);