我有问题。我需要比较Word文档。 C#中的文本和格式,我发现了一个第三方库来查看和处理该文档,它是Devexpress。所以我下载了试用版,以检查问题是否可以解决
示例我有两个单词文档
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
但是我无法实现用于检查格式的代码。