Эта часть выглядит подозрительно:
i=children.size();
int i=1;
Первое должно быть изменяемым статическим полем (потому что иначе ваш код не будет компилироваться), что обычно является плохой идеей. Второй является локальным для метода, но никогда не используется.
Если вы пытаетесь объединить весь контент в один String
, я предлагаю вам создать StringBuilder
и передать его рекурсивным вызовам, например ::
static String walkList(List children) {
StringBuilder dst = new StringBuilder();
walkList1(children, dst);
return dst.toString();
}
static void walkList1(List children, StringBuilder dst) {
for (Object o : children) {
if (o instanceof javax.xml.bind.JAXBElement) {
if (((JAXBElement) o).getDeclaredType().getName()
.equals("org.docx4j.wml.Text")) {
org.docx4j.wml.Text t = (org.docx4j.wml.Text) ((JAXBElement) o)
.getValue();
dst.append(t);
}
}
else if (o instanceof org.docx4j.wml.R) {
org.docx4j.wml.R run = (org.docx4j.wml.R) o;
walkList1(run.getRunContent(), dst);
} else {
System.out.println(" IGNORED " + o.getClass().getName());
}
}
}
Также List<T>
и JAXBElement<T>
являются общими типами. Есть ли причина использовать необработанные типы?