我正试图从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();
}
答案 0 :(得分:6)
您的问题是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();
}
答案 1 :(得分:2)
看看Open XML Format SDK 2.0。有一些关于如何处理文档的例子,like this。
虽然我还没有使用它,但是你可以看一下这个Open Office XML C# Library。