문제

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

다른 팁

살펴보십시오 XML 형식 SDK 2.0을 엽니 다. 문서 처리 방법에 대한 몇 가지 예가 있습니다. 이와 같이.

나는 그것을 사용하지 않았지만 이것이 있습니다 Open Office XML C# 라이브러리 당신도 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top