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

C# 从xdocument c中删除第n个元素#,c#,xml,asp.net-mvc,linq-to-xml,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> <territor

我有如下的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>

A.
B
C
D
E

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

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

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

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

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

我建议使用
Linq
Xml
。您可以使用
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>

A.
B
C
E

检查这个我建议使用
Linq
Xml
。您可以使用
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>

A.
B
C
E

检查一下

谢谢,哈里。假设我想删除第二个产品节点内的所有元素,但不想删除产品节点,那么如何实现它?您只需查找
.elements.remove()
,它会删除元素而不是父节点。谢谢,Hari。假设我想删除第二个产品节点内的所有元素,但不想删除产品节点,那么如何实现它?您只需查找
.elements.remove()
,它删除的元素不是父节点。