2016-02-11 45 views
1

我想知道如何確定段落是否有隱藏文字。通過互操作很容易,但我似乎無法在openxml中找到它。任何幫助是極大的讚賞C#OpenXML確定段落是否隱藏文字

MainDocumentPart mdp = wordprocessingDocument.MainDocumentPart; 
XDocument xDoc = mdp.GetXDocument(); 
IEnumerable<XElement> = xDoc.Descendants(W.p); 

foreach (var paragraph in paragraphs) 
{ 
    // I want to check if this paragraph has hidden text or not, if it does I want to skip over it. 
    // if (paragraph.hasHiddenText()) { continue; } 
    // else, get the content 
    string paraText = paragraph.Descendants(W.t).Select(t => (String)t).StringConcatenate(); 

} 
+1

您是否嘗試使用一些隱藏文本創建文檔,然後解壓縮該文件並查看它是如何生成的? – Crowcoder

回答

1

如果繼續使用Open XML SDK,而不是LINQ到XML的它的方式更容易:

MainDocumentPart mdp = wordprocessingDocument.MainDocumentPart; 

foreach(var paragraph in mdp.Document.Body.Descendants<Paragraph>()) 
{ 
    ... 
    string paraText = paragraph.Descendants<Run>() 
           .Where(r => r.RunProperties.Vanish != null) 
           .Aggregate("", (text,r) => text += r.InnerText); 
} 

儘管SDK可能會稍微慢一點,它的方式更方便使用。除非你每分鐘處理數百份文件,否則我不會擔心。

+0

謝謝。我使用linq的原因是因爲有人提供了使用它來確定列表項值的解決方案。我能夠搜索第一個節點值來查找消失代碼。 – JeremyK