使用OOXML比较Docx文件

时间:2010-02-16 09:40:59

标签: openxml-sdk openxml wordprocessingml c#-3.0

如何从docx文件中逐字逐句(带样式)阅读。我想逐个比较两个docx文件,并根据我必须写入另一个docx文件(使用c#和OOXML)的差异。 我尝试使用 DocumentFormat.OpenXml.Extensions.dll OpenXMLdiff.dll ICSharpCode.SharpZipLib.dll 来实现这一目标,但没有任何东西给我逐字阅读的选项(ICSharpCode.SharpZipLib确实逐字逐句,但它不会给出与该词相关联的样式)。

对此的任何帮助都非常有用。

2 个答案:

答案 0 :(得分:3)

此MSDN文章介绍了如何逐段可靠地检索文档的确切文本。

http://msdn.microsoft.com/en-us/library/ff686712.aspx

同时,您可以确定每个段落的样式。这很容易。以下博客文章介绍了如何检索每个段落的样式和文本:

http://blogs.msdn.com/b/ericwhite/archive/2009/02/16/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.aspx

比较两者?这取决于您确切的所需语义。一种方法是创建包含段落和样式的XML文档,然后比较XML文档。 XML文档可能如下所示:

<Root>
  <Para>
    <Style>Normal</Style>
    <Text>This is the text of the paragraph.</Text>
  </Para>
  <Para>
    <Style>Heading1</Style>
    <Text>Overview of the Process</Text>
  </Para>
</Root>

答案 1 :(得分:0)

最简单的方法是使用您喜欢的ZIP库解压缩DOCX文件,然后将文本文件与文件IO库进行比较。