我正在尝试删除包含"{Some Text}"
的段落。下面的方法可以实现这一点,但是我注意到在删除段落后,还会剩下空的段落元素。
我该如何通过程序删除<w:p />
元素?
以下是我最初用来删除段落的方法。
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(file, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
Document D = mainPart.Document;
foreach (Paragraph P in D.Descendants<Paragraph>())
{
if (P.InnerText.Contains("{SomeText}"))
{
P.RemoveAllChildren();
//P.Remove(); //doesn't remove
}
}
D.Save();
}
以下是处理后的document.xml文件内容:
<w:p />
<w:p />
<w:p />
<w:p />
<w:p />
<w:p />
<w:p />
if ( ! P.InnerText.Contains("{SomeText}"))
? - Bob KaufmanD.Remove(P);
代替P.RemoveAllChildren
。 - acbodD.Remove(P)
抛出了一个异常,这实际上是正确的行为。这就是你原来代码中P.Remove()
应该做的事情。 - Matt Burland