使用docx4j中的XMLUtils.marshalToString()
,我在兩個docx文件(在解壓縮.docx後從相應的word/document.xml
中提取)中的相同位置處具有以下內容。這些文件之間的唯一不同之處:docx4j - 從XmlUtils.marshalToString()中省略的節點
<w:t xml:space="preserve">New line. First is </w:t>
和
<w:t xml:space="preserve"> <w:r> <w:t xml:space="preserve">New line.</w:t> </w:r> <w:r> <w:t xml:space="preserve"> First is </w:t> </w:r> </w:t>
在第一文件中,<w:t>
節點輸出如上。
<w:t xml:space="preserve"></w:t>
我檢查w:t
架構在http://www.schemacentral.com/sc/ooxml/e-w_p-1.html和w:r
是一個有效的包含的元素:
然而,在第二,一個空<w:t>
節點如下打印。
編輯:上述鏈接是w:p
元素的架構,而不是w:t
。 w:t
的正確鏈接是:http://www.schemacentral.com/sc/ooxml/e-w_t-1.html。它清楚地顯示了w:t
唯一可接受的內容是一個字符串(不是w:r
或任何其他標籤)。因此(正如Jason在下面的回答中所述),來自document.xml
的XML是無效的,並且(因此)不被解組到docx4j中。因此,該文本不可用於XmlUtils.marshalToString()的輸出。
什麼是保持第二塊輸出?
我查看了從哪裏讀取docx的輸出(由'WordprocessingMLPackage.load'觸發),並發現:WARN org.docx4j.jaxb.JaxbValidationEventHandler .handleEvent line 90 - [ERROR]:unexpected element(uri:「 http://schemas.openxmlformats.org/wordprocessingml/2006/main「,local:」r「)。預期的元素ar'。 這使我再次看到@上面的鏈接,並將mea culpa插入到上面的原始問題中。 簡答:我們試圖從docx的document.xml中讀取的XML是無效的。 – 2012-07-12 15:23:33