“ ProofError”元素在OpenXML中引起问题

时间:2018-10-03 10:50:05

标签: c# ms-word openxml openxml-sdk

我正在尝试使用Open XML读取word文档。 我正在寻找文档中的关键标签,以便识别需要从文档中获取的值。

我遍历每个段落,然后遍历文档中的每个段落以找到这些段落。 但是,似乎拼写和语法检查引起了问题,将文档中的“游程”与“ ProofError”元素识别出的任何错误分开,这使得很难正确地解析文档。

我试图删除所有ProofError元素并保存文档,但是它们似乎又回来了。 如果我在MS Word中手动运行拼写和语法检查,则没有问题,尽管这不切实际。

有人知道我可以解决这个问题的方法吗?

从文档中采样文本:

  

通信系统:UID 0,CW(0);频率:900 MHz;占空比:1:1   中:900MHz HSL使用的中参数:f = 900 MHz; σ= 0.979 S / m; εr= 40.68; ρ= 1000千克/立方米

用于浏览文档的代码

using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(openFileDialog.FileName, false))
{
    // start looking through the file here
    // correct proof errors here
    Body body = wordDocument.MainDocumentPart.Document.Body;
    foreach (Paragraph p in body.OfType<Paragraph>())
    {
        p.GetType();
        List<ProofError> errList = new List<ProofError>();
        foreach (ProofError err in p.OfType<ProofError>())
        {
            errList.Add(err);
        }
        foreach (ProofError err in errList)
        {
            err.Remove();
        } 
    }
    wordDocument.Save();
}

上面的代码将从列表中删除任何ProofError元素,我希望这样做并保存它可以将所有类似的运行合并在一起,但是保存时会再次出现证明错误。

下面的屏幕截图应显示段落的子级。 链接到引发错误的示例文档-这些是由于语言不正确造成的,但是我无法控制即将出现的格式,并且还会引发其他与语言无关的错误。

Paragraph Children

Sample File

0 个答案:

没有答案