C#에서 Word (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();
}
다른 팁
살펴보십시오 XML 형식 SDK 2.0을 엽니 다. 문서 처리 방법에 대한 몇 가지 예가 있습니다. 이와 같이.
나는 그것을 사용하지 않았지만 이것이 있습니다 Open Office XML C# 라이브러리 당신도 볼 수 있습니다.
제휴하지 않습니다 StackOverflow