如何抢在C#从字(DOCX)文档中的文本?
-
11-09-2019 - |
题
我想从一个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();
}
解决方案
您的问题是XML命名空间。 SelectNodes
不知道如何<w:t/>
转化为完整的命名空间。因此,你需要使用的过载,这需要一个XmlNamespaceManager
作为第二个参数。我修改你的代码了一下,似乎工作:
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());
XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDoc.NameTable);
mgr.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
foreach (XmlNode node in xmlDoc.SelectNodes("/descendant::w:t", mgr))
{
builder.AppendLine(node.InnerText);
}
return builder.ToString();
}
其他提示
看一看的 Open XML格式SDK 2.0 。有关于如何处理文档,这样一些例子一>
虽然我没有用它,就是有的Open Office XML C#库中,你可以看一看为好。
不隶属于 StackOverflow