A simple XPath example using JAXP only:
package serg.xslt;import java.io.\*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.\*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.\*; import org.w3c.dom.traversal.NodeIterator; import org.xml.sax.InputSource; import com.sun.org.apache.xpath.internal.CachedXPathAPI; public class PathSelector { public static void main(String arg[]) throws Exception { String filename = null; String xpath = null; filename = arg[0]; // xpath = arg[1]; xpath = "//book/following-sibling::\*"; // set up a dom tree InputSource in = new InputSource(new FileInputStream(filename)); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document doc = dbf.newDocumentBuilder().parse(in); System.out.println("Querying Dom using : " + xpath); CachedXPathAPI path = new CachedXPathAPI(); NodeIterator nl = path.selectNodeIterator(doc, xpath); // the actual XPath selector Transformer trans = TransformerFactory.newInstance().newTransformer(); trans.setOutputProperty(OutputKeys.OMIT\_XML\_DECLARATION, "yes"); System.out.println(""); Node n; while ((n = nl.nextNode()) != null) { trans.transform(new DOMSource(n), new StreamResult( new OutputStreamWriter(System.out))); } System.out.println(""); } }