从 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);
我建议使用 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>
勾选这个Demo
我有 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);
我建议使用 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>
勾选这个Demo