Как добавить новый элемент списка в список - PullRequest
1 голос
/ 18 октября 2011

Я хотел бы найти абзац списка (начиная с.) И добавить другой элемент списка в этот список (это зависит от текста первого элемента списка). Я перепробовал много способов создания нового абзаца, но все, чего я добился, - это создание новых элементов списка, но к абзацу добавлен объект org.docx4j.wml.Text. Новый текст абзаца пуст. Как создать новый элемент списка и добавить его к нужному элементу?

  • а. элемент списка 1 | тест | // | тест | следует добавить к б.
  • б. // новые элементы созданы, но нет текста
  • с.
  //traverse through a document
    public List<Object> apply(Object obj) {
       if (obj instanceof org.docx4j.wml.P) { 
          if (p.getPPr() != null) {
             if (p.getPPr().getPStyle() != null) {
                if ((p.getPPr().getPStyle().getVal().equals("Akapitzlist"))) {
                   //there is a list paragraph
                         ObjectFactory factory = Context.getWmlObjectFactory();
                         Object deepCopy = XmlUtils.deepCopy(obj);
                    //Create the paragraph 
                    org.docx4j.wml.P para = factory.createP();

                    // Create the text element 
                    org.docx4j.wml.Text t = factory.createText();
                    t.setValue("|test|");

                    // Create the run 
                    org.docx4j.wml.R run = factory.createR();
                    run.getContent().add(t);
                    para.getContent().add(run);
                    //add new paragraph to the document
                    ((org.docx4j.wml.P) obj).getContent().add(para);

    }...}

1 Ответ

0 голосов
/ 20 октября 2011

Мое решение, просто добавить к телу с увеличенным индексом. Я создаю глубокую копию в стиле preserwe.

    public List<Object> apply(Object obj) {


    Object deepCopy = null;



    if (obj instanceof org.docx4j.wml.P) {

        org.docx4j.wml.P p = (org.docx4j.wml.P) obj;


        if (p.getPPr() != null) {
            if (p.getPPr().getPStyle() != null) {
                if ((p.getPPr().getPStyle().getVal().equals("Akapitzlist")) && (akapListCounter < 10)) {

                    if (((org.docx4j.wml.P) obj).getPPr().getPStyle() != null) {
                        if ((((org.docx4j.wml.P) obj).getPPr().getPStyle().getVal().equals("Akapitzlist"))) {
                            deepCopy = XmlUtils.deepCopy(obj);
                            akapListCounter++;
                            int indexOf = wmlDocumentEl.getBody().getContent().indexOf(obj);


                            List<Object> content = ((org.docx4j.wml.P) deepCopy).getContent();
                            for (Object el : content) {
                                System.out.println("class1:" + el.getClass().toString());
                                if (el instanceof org.docx4j.wml.R) {
                                    List<Object> subc = ((org.docx4j.wml.R) el).getContent();
                                    for (Object r : subc) {
                                        ((javax.xml.bind.JAXBElement) r).setValue("tetetete");
                                    }
                                }

                            }// end for


                            wmlDocumentEl.getBody().getContent().add(indexOf + 1, deepCopy);


                        }
                    }//end get style

                }
            } 
        } else {}


    }

    return null;
}
...