I want to use XQuery For Xml processing in java

7.3k Views Asked by At

I want to use XQuery for fetching data from Xml in java, but I am not getting which Jar I need to add for this. I searched in google lot but haven't got any useful example. For example I got following link:

https://docs.oracle.com/database/121/ADXDK/adx_j_xqj.htm

Then I am not getting jar file mentioned here. Anyone know how to start using XQuery in Java with a simple example will be very helpful. After lot of search I have got this link which is saying Xqjapi.jar comes with oracle database.

https://technology.amis.nl/2011/07/30/running-xquery-from-java-applications-using-the-xqj-api-and-the-oracle-xdk-implementation/

Is there any open source api I can use in Java for using XQuery?

2

There are 2 best solutions below

0
On

Well, there is another approach to get the required JARS, you need not install oracle database for that. I found the solution in this link,

http://orafmwsoa.blogspot.co.at/2014/06/running-xquery-from-java-applications.html

But you need not go through the entire link, what important point to note is, all necessary JARS are available from Oracle XQuery for Hadoop implementation.

And here is the link,

Oracle XQuery for Hadoop 2.4.1

Just download Oracle XQuery for Hadoop 4.1.0 and extract and create a normal Java Project with the libraries in path.

I tried this example from your link, and it works

import javax.xml.xquery.XQConnection;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQPreparedExpression;
import javax.xml.xquery.XQSequence;
import oracle.xml.xquery.OXQDataSource;


public class HelloWorld {

public static void main(String[] args) throws XQException {
    OXQDataSource ds = new OXQDataSource();
    XQConnection con = ds.getConnection();
    String query = "<hello-world>{1 + 1}</hello-world>";
    XQPreparedExpression expr = con.prepareExpression(query); 
    XQSequence result = expr.executeQuery();
    System.out.println(result.getSequenceAsString(null));
    
    result.close();
    expr.close();
    con.close();
}

}

With following JARS in path,

apache-xmlbeans

orai18n-mapping

oxquery

xmlparserv2_sans_jaxp_services

xqjapi

Also another suggestion,

  1. I installed Oracle Express Edition 11.2 OracleXE112_Win64 and it didn't had the required JARS, XE may be has limited functionality, so try installing different one.
  2. Also this link here Embedding XQuery in Java suggests usage of SAXON XSLT & XQuery processor. SAXON
1
On

If the XML is in filestore, then you need a filestore-based XQuery processor such as Saxon.