簡體   English   中英

如何通過索引從xml中刪除元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM