2016-06-28 101 views
2

我想用docx4j庫來分析一個docx文件。如何在使用docx4j解析DOCX時檢測org.docx4j.wml.instrText?

我需要檢測org.docx4j.wml.instrText對象,但實際上它返回org.docx4j.wml.Text而不是org.docx4j.wml.instrText。

我發現,與舊版本在這裏這個庫工作的解決方案:

http://www.docx4java.org/forums/docx-java-f6/can-i-just-don-t-load-contents-of-w-instrtext-into-text-t193.html

其實這個解決方案:

((javax.xml.bind.JAXBElement)((org.docx4j.wml.Text) o).getParent()).getName().getLocalPart() 

但隨着最新更新這是行不通的。你能告訴我在這個代碼上有什麼變化嗎?

實際上,它會產生無法將org.docx4j.wml.R轉換爲JAXBElement的類型轉換錯誤。

在此先感謝。

回答

1

文本對象的父,由下式給出:

((org.docx4j.wml.Text) o).getParent() 

是,作爲錯誤說,一個org.docx4j.wml.R,你可以不投給的JAXBElement。

要確定在這種情況下你的對象,嘗試:

((javax.xml.bind.JAXBElement)o).getName().getLocalPart() 
+0

,但它並沒有最新晚間發佈工作英寸請在那裏測試。 –

+0

您需要提供完整的測試用例(工作Java代碼+輸入docx) – JasonPlutext

+0

ClassFinder texts = new ClassFinder(Text.class); new TraversalUtil(p,texts); \t \t StringBuilder sb = new StringBuilder(); \t \t爲(對象文本:texts.results){\t \t \t \t \t \t \t \t \t \t \t \t \t \t字符串的QName =((javax.xml.bind.JAXBElement)特).getName ().getLocalPart(); 如果(tex.getParent()的instanceof FldChar){ \t } 否則{ sb.append(tex.getValue()); } – santhanam

相關問題