比较C#中的两个Word文档

时间:2018-09-19 08:51:03

标签: c# devexpress-wpf text-comparison

我有问题。我需要比较Word文档。 C#中的文本和格式,我发现了一个第三方库来查看和处理该文档,它是Devexpress。所以我下载了试用版,以检查问题是否可以解决

示例我有两个单词文档

1: 一个文本示例

  1. 不是文本示例

在上面的文本中,区别只是单词不是

我的问题是如何检查包括格式在内的差异?

到目前为止,这是我用于迭代文档内容的代码

public void CompareEpub(string word)
        {
            try
            {
                using (DevExpress.XtraRichEdit.RichEditDocumentServer srv = new DevExpress.XtraRichEdit.RichEditDocumentServer())
                {
                    srv.LoadDocument(word);
                    MyIterator visitor = new MyIterator();
                    DocumentIterator iterator = new DocumentIterator(srv.Document, true);
                    while (iterator.MoveNext())
                    {
                        iterator.Current.Accept(visitor);
                    }
                    foreach (var item in visitor.ListOfText)
                    {
                        Debug.WriteLine("text: " + item.Text + " b: " + item.IsBold + " u: " + item.IsUnderline + " i: " + item.IsUnderline);
                    }
                }

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Debug.WriteLine(ex.StackTrace);
                throw ex;
            }
        }


        public class MyIterator : DocumentVisitorBase
        {

            public List<Model.HtmlContent> ListOfText { get; }

            public MyIterator()
            {
                 ListOfText= new List<Model.HtmlContent>();
            }

            public override void Visit(DocumentText text)
            {
                var m = new Model.HtmlContent
                {
                    Text = text.Text,
                    IsBold = text.TextProperties.FontBold,
                    IsItalic = text.TextProperties.FontItalic,
                    IsUnderline = text.TextProperties.UnderlineWordsOnly
                };
                ListOfText.Add(m);
            }
        }

使用上面的代码,我可以导航到文本及其格式。但是我怎样才能将其用作文本比较?

如果我要为每个文档创建两个列表进行比较。

我该如何比较?

如果我要将文本与另一个列表进行比较。循环比较。

我将收到它,因为只有两个字相等。

可以帮我这个忙。或者只是提供一个想法,让我可以使其工作。

我没有在devexpress论坛上发帖,因为我认为这是我将如何做到的问题。而且我使用的试用版或控件没有问题。而且我还发现该控件没有比较文本的功能。像带有Microsoft Word的人一样。

谢谢。

更新

所需的输出

(不是文本示例)

()中的文本表示在第一个文档中找不到该文本 我想要的输出类似于Diff Match Patch的输出 https://github.com/pocketberserker/Diff.Match.Patch

但是我无法实现用于检查格式的代码。

0 个答案:

没有答案