我使用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...>
}
}