从xdocument中删除第n个元素c#

时间:2016-06-21 09:13:46

标签: c# xml asp.net-mvc linq-to-xml

我有xml如下。我想从该xml中删除第n个产品节点。

我曾经尝试过但没有工作。

document.Descendants("products").Descendants("product").Take(1)

XML

<products>
    <product>
        <territory>A</territory>
    </product>
    <product>
        <territory>B</territory>
    </product>
    <product>
        <territory>C</territory>
    </product>
    <product>
        <territory>D</territory>
    </product>
    <product>
        <territory>E</territory>
    </product>
</products>

如何从此xml中删除第3个产品节点?

2 个答案:

答案 0 :(得分:1)

您无法使用索引访问子节点。一种方法是:

document.Descendants("products").Descendants("product").Skip(2).Take(1);

答案 1 :(得分:1)

我建议Linq使用Xml。您可以使用ElementAt并在给定位置查找元素,可以在find元素上调用Remove来删除元素。

    int position = 3;  // Specify position.
    XElement element = XElement.Parse(input);

    element                                      
        .Elements("product")
        .ElementAt(3)
        .Remove();

<强>输出继电器

 <products>
  <product>
    <territory>A</territory>
  </product>
  <product>
    <territory>B</territory>
  </product>
  <product>
    <territory>C</territory>
  </product>
  <product>
    <territory>E</territory>
  </product>
</products>

选中此Demo