Я хочу извлечь текст из прогонов в document.xml
, используя docx4j из файла DOCX, например:
<w:document mc:Ignorable="w14 w15 w16se wp14">
<w:body>
<w:r>
<w:rPr>
<w:rFonts w:ascii="TimesNewRomanRegular" w:hAnsi="TimesNewRomanRegular" w:cs="TimesNewRomanRegular"/>
<w:b/>
<w:sz w:val="19"/>
<w:szCs w:val="19"/>
<w:lang w:val="en-US"/>
</w:rPr>
<w:t>CEO</w:t>
</w:r>
...
Я извлек прогоны, и теперь я хочу получить текст каждого прогона.Код ниже работает, но очень многословно.Можно ли получить текст экземпляра org.docx4j.wml.R более лаконичным образом?
public static Optional<String> runText(org.docx4j.wml.R run)
{
return run.getContent()
.stream()
.map(JAXBElement.class::cast)
.map(JAXBElement::getValue)
.filter(Text.class::isInstance)
.map(Text.class::cast)
.map(Text::getValue)
.findFirst();
}
Пока существуют «R :: getContent» и «R :: getRPr», яИнтересно, почему «R :: getText» не существует в текстовом документе.