0

XMLUtils.marshalToString()docx4j から使用すると、2 つの docx ファイルの同じ場所に次のコンテンツがあります (.docx を解凍した後に対応するものから抽出されます) word/document.xml。これらは、ファイル間の唯一の違いです。

<w:t xml:space="preserve">改行。最初は </w:t>

<w:t xml:space="保存">
 <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>ノードは上記のように出力されます。

ただし、2 番目の例では、空の<w:t>ノードが次のように出力されます。

   <w:t xml:space="preserve"></w:t>

http://www.schemacentral.com/sc/ooxml/e-w_p-1.htmlw:tスキーマを確認したところ、含まれている有効な要素です。w:r

編集:上記のリンクはw:p要素のスキーマであり、 ではありませんw:t。の適切なリンクw:thttp://www.schemacentral.com/sc/ooxml/e-w_t-1.htmlです。唯一の受け入れ可能なコンテンツが文字列であることを明確に示していw:tます ( aw:rやその他のタグではありません)。その結果(以下のジェイソンの回答が示唆されているように)、からのXMLdocument.xmlは無効であり、(そのため)docx4jに非整列化されていません。その結果、テキストは XmlUtils.marshalToString() による出力に使用できませんでした。

2 番目のブロックが出力されない原因は何ですか?

4

1 に答える 1

0

marshalToStringを信頼できます。

空のw:tを返している場合は、基になるorg.docx4j.wml.Textオブジェクトにnullまたは空の値フィールドがあるためです。

あなたはそれを移入することになっているどんなコードでも見る必要があります。

于 2012-07-11T22:43:15.517 に答える