Я использую docx4j в приложении XPages для создания документов Word, содержащих содержимое из XPage. Документ Word (в формате .docx) создается на основе шаблона (в формате .dotx). Одна закладка из моего шаблона .dotx выглядит следующим образом:
<w:p>
<w:bookmarkStart w:name="Fachkompetenz" w:id="0"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
Использование функции
private static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) {
List<Object> result = new ArrayList<Object>();
if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue();
if (obj.getClass().equals(toSearch))
result.add(obj);
else if (obj instanceof ContentAccessor) {
List<?> children = ((ContentAccessor) obj).getContent();
for (Object child : children) {
result.addAll(getAllElementFromObject(child, toSearch));
}
}
return result;
}
Я могу получить объект p, позвонив
List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), P.class);
или вызов объекта CTBookmark
List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), P.class);
Однако, когда у меня есть эти объекты, я не знаю, как добавить текст (содержимое XPage), чтобы заменить закладку. Я прочитал столько, сколько я могу найти в Интернете по этой теме, но не могу найти способ сделать это. У кого-нибудь есть предложения?