如何在C#中从word(docx)文档中抓取文本?
我正在尝试从 Word 文档中获取纯文本。 具体来说,xpath 给我带来了麻烦。 你如何选择标签? 这是我的代码。
public static string TextDump(Package package)
{
StringBuilder builder = new StringBuilder();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream());
foreach (XmlNode node in xmlDoc.SelectNodes("/descendant::w:t"))
{
builder.AppendLine(node.InnerText);
}
return builder.ToString();
}
I'm trying to get the plain text from a word document. Specifically, the xpath is giving me trouble. How do you select the tags? Here's the code I have.
public static string TextDump(Package package)
{
StringBuilder builder = new StringBuilder();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream());
foreach (XmlNode node in xmlDoc.SelectNodes("/descendant::w:t"))
{
builder.AppendLine(node.InnerText);
}
return builder.ToString();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的问题是 XML 命名空间。
SelectNodes
不知道如何将
转换为完整的命名空间。 因此,您需要使用重载,它将 XmlNamespaceManager 作为第二个参数。 我稍微修改了你的代码,它似乎有效:Your problem is the XML namespaces.
SelectNodes
don't know how to translate<w:t/>
to the full namespace. Therefore, you need to use the overload, that takes anXmlNamespaceManager
as the second argument. I modified your code a bit, and it seems to work:查看开放 XML 格式 SDK 2.0。 有一些关于如何处理文档的示例,像这样。
虽然我没有用过,但是有这个 Open Office XML C# Library 可以看一下也在。
Take a look at the Open XML Format SDK 2.0. There some examples on how to process documents, like this.
Although I have not used it, there is this Open Office XML C# Library that you can take a look at as well.