docx4j suchen und ersetzen

Habe ich docx-Dokument mit einigen Platzhaltern. Jetzt sollte ich ersetzen Sie Sie mit anderen Inhalten, und speichern Sie die neuen docx-Dokument. Angefangen habe ich mit docx4j und fand diese Methode:

public 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;
}

public static void findAndReplace(WordprocessingMLPackage doc, String toFind, String replacer){
    List<Object> paragraphs = getAllElementFromObject(doc.getMainDocumentPart(), P.class);
    for(Object par : paragraphs){
        P p = (P) par;
        List<Object> texts = getAllElementFromObject(p, Text.class);
        for(Object text : texts){
            Text t = (Text)text;
            if(t.getValue().contains(toFind)){
                t.setValue(t.getValue().replace(toFind, replacer));
            }
        }
    }
}

Aber, dass die arbeiten nur selten, da in der Regel die Platzhalter-splits über mehrere Texte läuft.

Versuchte ich UnmarshallFromTemplate, aber es funktioniert nur selten zu.

Wie dieses problem gelöst werden könnte?

InformationsquelleAutor luckyi | 2013-10-30

Schreibe einen Kommentar