Удаление абзаца из C# openxml

Я пытаюсь удалить абзац (я использую некоторый текст-заполнитель для генерации из файла, подобного шаблону docx) из файла .docx с помощью OpenXML, но всякий раз, когда я удаляю абзац, он прерывает цикл foreach, который я использую для итерации.

MainDocumentPart mainpart = doc.MainDocumentPart;
IEnumerable<OpenXmlElement> elems = mainPart.Document.Body.Descendants();

foreach(OpenXmlElement elem in elems){
    if(elem is Text && elem.InnerText == "##MY_PLACE_HOLDER##")
    {
        Run run = (Run)elem.Parent;
        Paragraph p = (Paragraph)run.Parent;
        p.RemoveAllChildren();
        p.Remove();
    }
}

Это работает, удаляет местозаполнитель и абзац, в котором он находится, но цикл foreach перестает повторяться. И мне нужно больше вещей, чтобы сделать в моем цикле foreach.

Это нормальныйспособ удалить абзац в C# с помощью OpenXML и почему мой цикл foreach останавливается или как сделать так, чтобы он не останавливался? Спасибо.

11
задан edin-m 26 March 2012 в 16:27
поделиться