[英]how to remove elements from xml by index
我想使用元素索引從XML列表中刪除用戶選擇的元素。 例如:
foreach (int index in indexes)
{
Root.Descendants("book").ElementAt(index).Remove();
}
但這會引發IndexOutOfRangeException
。 任何建議表示贊賞。
刪除項目時,剩余的“ book”元素(及其索引)的數量會發生變化。 您的索引數組中可能有0、1、2、3,但是一旦刪除了第一項,第四個索引(3)現在就超出了范圍。 如果索引是連續的,則可以顛倒刪除元素的順序,因此當前索引永遠不會“超出范圍”。
嘗試這個:
for (int i = indexes.Length - 1; i >= 0; i--)
{
Root.Descendants("book").ElementAt(indexes[i]).Remove();
};
但是,您提到要刪除“用戶選擇的”元素,因此我猜測您的元素可能是隨機的。 相反,您可能想要嘗試如下操作:
IEnumerable<XElement> books = Root.Descendants("book");
IList<XElement> booksToRemove = new List<XElement>(indexes.Length);
foreach (int index in indexes)
{
booksToRemove.Add(books.ElementAt(index));
}
foreach (XElement book in booksToRemove)
{
book.Remove();
}
現在,在刪除元素或索引之前,不必關心它們的順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.