-1

可能重复:
如何使用 C# 删除 xml 元素?

假设我有一个这样的 XML 文档:

<doc>
     <car>
         <color>Red</color>
         <size>compact</size>
     </car>
     <car>
         <color>Yellow</color>
         <size>mid-size</size>
     </car>
</doc>

我想删除带有黄色属性的汽车的整个条目,所以xml文件就变成了

<doc>
     <car>
         <color>red</color>
         <size>compact</size>
     </car>
</doc>

我该怎么办?我搜索了高低并找到了解决方案,但遗憾的是不是 c#。

4

3 回答 3

1

您可以使用 Linq to XML:

  var yellowCars = from car in xDoc.Elements("doc").Elements("car") 
                     where car.Element("Color").Value == "Yellow" 
                     select car;

    foreach (var car in yellowCars)
    {
        car.Remove();
    }

  xDoc.Save();
于 2012-10-12T01:58:54.193 回答
0

我总是如何处理这种情况:我将整个文件加载到内存中,您可以通过将 xml 反序列化为 c# 类或 xmlnode 结构来做到这一点,这方面有很多教程。后记我对列表或数组进行任何编辑,然后重新序列化并覆盖整个文件。如果您的文件没有数百条记录,则应该没有明显的性能问题

于 2012-10-12T01:34:28.390 回答
0
using System.Xml.XPath;

...

var doc = XDocument.Parse(xml);
var list = new List<XElement>();
foreach (var element in doc.XPathSelectElements(@"/doc/car[color='Yellow']")) {
    list.Add(element);
}
foreach (var element in list) element.Remove();

更新:所以它在迭代时不会改变集合。

于 2012-10-12T01:36:56.297 回答