package org.docx4j.finders; import java.util.ArrayList; import java.util.List; import org.docx4j.TraversalUtil.CallbackImpl; import org.docx4j.wml.Tbl; import org.docx4j.wml.Tc; public class TableFinder extends CallbackImpl { boolean traveseTables=false; /** * Defaults to false; set this to true unless you don't * want to traverse a table (eg a nested table). * NB: If traversing from body level, you'll need to set it to true! * * @param traveseNestedTable */ public void setTraverseTables(boolean traveseTables) { this.traveseTables = traveseTables; } public List<Tbl> tblList = new ArrayList<Tbl>(); @Override public List<Object> apply(Object o) { if (o instanceof Tbl ) { tblList.add((Tbl)o); } return null; } @Override public boolean shouldTraverse(Object o) { if (traveseTables) { return true; } else { // Yes, unless its a nested Tbl return !(o instanceof Tbl); } } }