public class WmlPackageFixer extends CallbackImpl { public WmlPackageFixer(WordprocessingMLPackage wmlPackage) { walkJAXBElements(wmlPackage.getMainDocumentPart().getJaxbElement().getBody()); } @Override public void walkJAXBElements(Object parent) { List children = getChildren(parent); if (children != null) { for (Object child: children) { child = XmlUtils.unwrap(child); // fix for JAXB Bug ((Child) child).setParent(parent); this.apply(child); if (this.shouldTraverse(child)) { walkJAXBElements(child); } } } } @Override public List apply(Object element) { return null; } @Override public boolean shouldTraverse(Object o) { return true; } @Override public List getChildren(Object o) { return TraversalUtil.getChildrenImpl(o); } }