Frage

Ich versuche, den einfachen Text aus einem Word -Dokument zu erhalten. Insbesondere macht mir der XPath Probleme. Wie wählen Sie die Tags aus? Hier ist der Code, den ich habe.

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();
}
War es hilfreich?

Lösung

Ihr Problem sind die XML -Namespaces. SelectNodes Ich weiß nicht, wie man übersetzt wird <w:t/> zum vollständigen Namespace. Daher müssen Sie die Überladung verwenden, die eine benötigt XmlNamespaceManager als zweites Argument. Ich habe Ihren Code ein wenig geändert, und es scheint zu funktionieren:

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

Andere Tipps

Schauen Sie sich das an die Öffnen Sie das XML -Format SDK 2.0. Es gibt einige Beispiele zum Verarbeiten von Dokumenten, so was.

Obwohl ich es nicht benutzt habe, gibt es das Open Office XML C# Bibliothek Das können Sie sich auch ansehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top