package org.basex.examples.xqj.tutorial; import java.io.*; import java.math.*; import javax.xml.stream.*; import javax.xml.xquery.*; import org.w3c.dom.*; import org.xml.sax.*; import org.xml.sax.helpers.*; /** * XQJ Examples, derived from an * <a href="https://www.progress.com/products/data-integration-suite/data-integration-suite-developer-center/data-integration-suite-tutorials/learning-xquery/introduction-to-the-xquery-api-for-java-xqj-"> * XQJ online tutorial</a>. * * Part 4: Processing Results. * * @author BaseX Team 2005-17, BSD License */ public final class Part4 extends Main { /** * Main method of the example class. * @param args (ignored) command-line arguments * @throws Exception exception */ public static void main(final String... args) throws Exception { init("4: Processing Results"); // Create a connection XQConnection xqc = connect(); XQExpression xqe = xqc.createExpression(); // Iterate through query results info("Iterate through query results"); String path = new File("src/main/resources/xml").getAbsolutePath(); XQSequence xqs = xqe.executeQuery( "doc('" + path + "/employees.xml')//employee"); while(xqs.next()) { Element employee = (Element) xqs.getObject(); System.out.println(employee); } // Iterate through numeric values info("Iterate through numeric values"); xqs = xqe.executeQuery("doc('" + path + "/orders.xml')" + "/orders/order/xs:decimal(total_price)"); while(xqs.next()) { BigDecimal price = (BigDecimal) xqs.getObject(); System.out.println(price); } // Print atomic values info("Print atomic values"); xqs = xqe.executeQuery("'Hello world!', 123, 1E1, xs:QName('abc')"); while(xqs.next()) { System.out.println(xqs.getAtomicValue()); } // Return single items via SAX info("Return single items via SAX"); ContentHandler ch = new DefaultHandler() { @Override public void characters(final char[] c, final int s, final int l) { System.out.println("Characters/SAX: '" + new String(c, s, l) + '\''); } }; xqs = xqe.executeQuery( "doc('" + path + "/employees.xml')//employee"); while(xqs.next()) { xqs.writeItemToSAX(ch); } // Return sequence via SAX info("Return sequence via SAX"); xqs = xqe.executeQuery("doc('" + path + "/employees.xml')//employee"); xqs.writeSequenceToSAX(ch); // Return single items via StAX info("Return single items via StAX"); xqs = xqe.executeQuery("doc('" + path + "/employees.xml')//employee"); XMLStreamReader xmlReader = xqs.getSequenceAsStream(); while(true) { int type = xmlReader.next(); if(type == XMLStreamConstants.CHARACTERS) { System.out.println("Characters/StAX: '" + xmlReader.getText()); } else if(type == XMLStreamConstants.END_DOCUMENT) { break; } } // Close the connection close(xqc); } }