Package org.docx4j.samples
Class XPathQuery
java.lang.Object
org.docx4j.samples.XPathQuery
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
XPathQuery
public XPathQuery()
-
-
Method Details
-
main
Example of how to find an object in document.xml via XPath. As explained in Getting Started, there are limitations in the JAXB reference implementation which make this approach buggy: 1. the xpath expressions are evaluated against the XML document as it was when first opened in docx4j. You can update the associated XML document once only, by passing true into getJAXBNodesViaXPath. Updating it again (with current JAXB 2.1.x or 2.2.x) will cause an error. 2. For some documents, JAXB can’t set up the XPath at all! If these problems affect you, you could try using MOXy as your JAXB implementation (which docx4j supports as from docx4j 3.0). See http://www.docx4java.org/forums/docx-java-f6/moxy-t1242.html In you want to delete the object you've found, bear in mind it may be wrapped in a JAXBElement. Do it as explained at https://stackoverflow.com/a/52134975/1031689 Alternatively, the tried and tested approach is to use TraversalUtil; see the OpenMainDocumentAndTraverse sample. With module system encapsulation, you should launch your JVM with the following options: --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2.runtime=org.docx4j.JAXB_ReferenceImpl --add-opens org.eclipse.persistence.moxy/org.eclipse.persistence.jaxb=org.docx4j.JAXB_MOXy --add-opens org.eclipse.persistence.core/org.eclipse.persistence.oxm=org.docx4j.JAXB_MOXy --add-opens org.eclipse.persistence.core/org.eclipse.persistence.internal.oxm.record=org.docx4j.JAXB_MOXy See further https://openjdk.org/jeps/261#Breaking-encapsulation- Throws:
Exception
-