【发布时间】:2019-09-18 13:55:11
【问题描述】:
我使用 OpenXML 解析 MS Word 文档以查找具有 Author 值的跟踪更改,以便将它们清空。它适用于一个特定的 Word 文档,我不知道为什么。 9 个曲目更改中仅找到 6 个。
这就是我寻找音轨变化的方式:
var file = Path.GetFileName(filePath);
using (WordprocessingDocument document = WordprocessingDocument.Open(filePath, true))
{
var types = typeof(OpenXmlCompositeElement).Assembly.GetTypes()
.Where(p => !p.IsInterface && p.GetProperty("Author") != null && p.GetProperty("Author").PropertyType.Equals(typeof(StringValue)))
.ToList();
var body = document.MainDocumentPart.Document.Body;
var changes = body.Descendants().Where(x =>types.Contains(x.GetType()));
}
有没有更好的方法来实现这一点?
我也尝试过传递types found on this page 的列表,但结果是一样的。仍然是这 3 个被忽略的音轨变化。
编辑
使用 Open XML SDK Productivity 工具,这里是应该作为跟踪更改找到但上面的代码缺少的节点之一:
<w:ins w:id="283" w:author="Mr Smith" w:date="2019-09-11T12:34:00Z">
<w:r w:rsidR="008458AA">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
</w:rPr>
<w:t>
2
</w:t>
</w:r>
</w:ins>
【问题讨论】:
-
能否请您发布一两个有效修订版和一两个无效修订版的 Word Open XML,以便大家进行比较?为此,您可以使用 Open XML SDK 生产力工具。和/或你能想到这些修订的位置/格式有什么不同吗?
-
我在帖子中添加了一个链接。这是一份机密文件,所以我不得不删除所有内容。但现在更容易看到问题。如果您在 Word 中打开文档,您会看到作者更改的曲目。但是当我运行我的代码时,我根本看不到轨道变化。
-
我使用了生产力工具并比较了两个不同的 doc 文件(不同的语言),但修订版相同,它们只有两个地方不同。缺少曲目更改的有以下删除:/word/footer2.xml、/word/footer3.xml、/word/header2.xml 和 /word/header3.xml
-
查看我的编辑与错过曲目更改的 xml 代码
-
很好,你找到了它,也许现在你明白为什么我要求提供提供上下文的 XML(编辑 not 包含 BTW)以及修订的位置位于。请注意,对于未来的问题,提供文档链接是没有用的。我提醒您网站指南:所有相关信息都需要在问题中。