C#-从包含单词字段的XML数据中读取纯文本

C#-从包含单词字段的XML数据中读取纯文本,c#,xml,word,C#,Xml,Word,我正在为一个应用程序开发一个“搜索”功能,在其中搜索XML内容中的关键字。我只需要搜索纯文本,即没有xml标记或单词字段。下面是我用来读取文本的代码片段(不包括XML标记和二进制数据): 但是,我发现,由于此xml实际上存储Word文档内容,因此它还包含以下Word字段:(REF _Ref325306498\h*MERGEFORMAT图1和REF _Ref325306499\h*MERGEFORMAT图2) 这里我要搜索的内容是“(图1和图2)”。 但是我找不到这个文本,因为它还包含MERGEF

我正在为一个应用程序开发一个“搜索”功能,在其中搜索XML内容中的关键字。我只需要搜索纯文本,即没有xml标记或单词字段。下面是我用来读取文本的代码片段(不包括XML标记和二进制数据):

但是,我发现,由于此xml实际上存储Word文档内容,因此它还包含以下Word字段:(REF _Ref325306498\h*MERGEFORMAT图1和REF _Ref325306499\h*MERGEFORMAT图2)

这里我要搜索的内容是“(图1和图2)”。 但是我找不到这个文本,因为它还包含MERGEFORMAT和其他Word字段


如何从该xml数据中仅读取纯文本?

解析包含Word文件的每个xml DOM元素后,您可以将Word文档解析为字符串,然后使用该字符串进行搜索-这里提供了两种方法来获取Word文档内容作为字符串-本质上,您可以使用Word automation将文档另存为文本,也可以使用第三方库,或者在代码中使用Word DOM。

您可以尝试使用XElement和XPath。您需要在using指令中添加System.Xml.Linq和System.Xml.XPath名称空间

var xml = XElement.Load("filepath");
string searchText="your search text";
var matchElements=xml.XPathSelectElements(@"//*[contains(.,'"+searchText+"')]");

阿南,谢谢你的回复。这确实有点帮助。但是,当我尝试用xml内容加载word文档时,我遇到了一个OutOfMemoryException,因为我们在这里循环处理大量数据库记录(xmlContent来自数据库)。
var xml = XElement.Load("filepath");
string searchText="your search text";
var matchElements=xml.XPathSelectElements(@"//*[contains(.,'"+searchText+"')]");