package cn.flightfeather.supervision.docx4j.simpleDemo;
|
|
import org.docx4j.TraversalUtil;
|
import org.docx4j.XmlUtils;
|
import org.docx4j.finders.ClassFinder;
|
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
|
import org.docx4j.wml.FldChar;
|
|
public class TraverseFind {
|
|
|
/**
|
* Example of how to find an object in document.xml
|
* via traversal (as opposed to XPath)
|
*
|
*/
|
public static void main(String[] args) throws Exception {
|
|
String inputfilepath = System.getProperty("user.dir") + "/checkbox.docx";
|
|
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
|
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
|
|
ClassFinder finder = new ClassFinder(FldChar.class); // <----- change this to suit
|
new TraversalUtil(documentPart.getContent(), finder);
|
|
System.out.println("got " + finder.results.size() );
|
|
for (Object o : finder.results) {
|
|
Object o2 = XmlUtils.unwrap(o);
|
// this is ok, provided the results of the Callback
|
// won't be marshalled
|
|
if (o2 instanceof org.docx4j.wml.Text) {
|
|
org.docx4j.wml.Text txt = (org.docx4j.wml.Text)o2;
|
|
System.out.println( txt.getValue() );
|
|
} else {
|
System.out.println( XmlUtils.marshaltoString(o, true, true));
|
}
|
|
|
|
}
|
|
}
|
|
|
}
|