我想找到一个列表段落(以。开头),并将另一个列表项追加到此列表中(它取决于第一个列表元素的文本)。
我已经尝试了许多创建新段落的方法,但我所取得的所有成就都是创建了新的列表元素,但org.docx4j.wml.Text
个对象被附加到附加新段落的段落中。新段落文本为空。如何创建新的列表元素并将其附加到正确的元素?
//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); }...}
答案 0 :(得分:0)
我的解决方案,只是增加索引附加到身体。我正在为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;
}