C# 从xdocument c中删除第n个元素#
我有如下的xml。我想从该xml中删除第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
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()
,它删除的元素不是父节点。