从 xdocument c# 中删除第 n 个 xelement

Delete nth xelement from xdocument c#

我有 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 个产品节点?

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

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

我建议使用 LinqXml。您可以使用 ElementAt 并在给定位置找到一个元素,可以在查找元素上调用 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