使用XMLUtils.marshalToString()
来自 docx4j,我在两个 docx 文件的相同位置有以下内容(word/document.xml
解压缩 .docx 后从对应的文件中提取)。这些是文件之间的唯一区别:
<w:t xml:space="preserve">换行。首先是</w:t>
和
<w:t xml:space="preserve"> <w:r> <w:t xml:space="preserve">换行。</w:t> </w:r> <w:r> <w:t xml:space="preserve"> 首先是 </w:t> </w:r> </w:t>
在第一个文档中,<w:t>
节点的输出如上。
但是,在第二个中,将<w:t>
打印一个空节点,如下所示:
<w:t xml:space="preserve"></w:t>
我在http://www.schemacentral.com/sc/ooxml/e-w_p-1.html检查了w:t
架构,是一个有效的包含元素。w:r
编辑:上面的链接是w:p
元素的架构,而不是w:t
. 正确的链接w:t
是:http ://www.schemacentral.com/sc/ooxml/e-w_t-1.html 。它清楚地显示了唯一可接受的内容w:t
是字符串(不是 aw:r
或任何其他标签)。因此(正如下面 Jason 的回答所建议的那样),来自的 XMLdocument.xml
无效,并且(因此)没有被解组到 docx4j 中。因此,文本不可用于 XmlUtils.marshalToString() 的输出。
是什么阻止了第二个块被输出?