3

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();
}
4

2 に答える 2

6

問題は XML 名前空間です。完全な名前空間SelectNodesに変換する方法がわかりません。したがって、 2 番目の引数として<w:t/>an を取るオーバーロードを使用する必要があります。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();
    }
于 2009-07-08T17:59:26.537 に答える
2

Open XML Format SDK 2.0をご覧ください。この のように、ドキュメントを処理する方法の例がいくつかあります。

私は使用していませんが、こちらのOpen Office XML C# Libraryも参照してください。

于 2009-07-08T17:53:05.567 に答える