XOMライブラリを使用して.docxドキュメントを解析および処理します。MS Wordは、段落タグ(<w:p>)内の実行(<w:r>)にテキストコンテンツを格納し、多くの場合、テキストをいくつかの実行に分割します。時々、すべての単語とそれらの間のすべてのスペースが別々に実行されます。スペースのみを含むランをロードすると、パーサーはそのスペースを削除して空のタグとして処理します。その結果、出力にはスペースを含まないテキストが含まれます。パーサーにすべてのスペースを保持させるにはどうすればよいですか?このパーサーを保持したいのですが、解決策がない場合は、別のパーサーをお勧めしますか?
これが私がパーサーと呼ぶ方法です:
StreamingPathFilter filter = new StreamingPathFilter("/w:document/w:body/*:*", prefixes);
Builder builder = new Builder(filter.createNodeFactory(null, contentTransform));
builder.build(documentFile);
...
StreamingTransform contentTransform = new StreamingTransform() {
@Override
public Nodes transform(nu.xom.Element node){
<...process XML and output text...>
}
}