XQJ简单实例

XQJ,也即XQuery API for Java。XQJ就是用Java实现的一个包,其中包含了很多接口和类,使用XQJ可以查询单独的XML文档或XML文档集合。这么说可能大家有点晕,打个比方,XQJ对于XQuery就像JDBC Java API对于SQL,XQJ提供了XQuery的Java实现,使我们多了一个操作XML文档的方式。

现在实现XQJ的主要有两个框架,Qexo和Saxon,对与Qexo不甚了解。而Saxon可以同时在Java和。net中使用。

 

  Saxon可以到http://saxon.sourceforge.net/ 下载。 

 

 使用Saxon操作XML文档的简单例子:

 

public class XQuery { public static void main(String[] args) { String content = ""; XQItem xqItem = null; XQDataSource ds = new SaxonXQDataSource(); try { XQConnection conn = ds.getConnection(); XQPreparedExpression exp = conn .prepareExpression("for $x in doc(/"book.xml/")/bookstore/book where $x/price>30 return $x/title"); XQResultSequence result = exp.executeQuery(); while (result.next()) { xqItem = result.getItem(); content +=xqItem.getItemAsString(null); } System.out.println(content); } catch (XQException e) { // TODO: handle exception e.printStackTrace(); } }

这个例子很简单,通过一个简单的查询语句查询XML文档,并以String形式输出,使用Saxon,首先需要创建源XQDataSource,

然后获得连接执行查询操作。对于提取查询的结果数据,有多种方法,上面例子中的就是一种,我们还可以通过熟悉的SAX

方式操作。

public static void formatOutput(XMLStreamReader reader) throws XMLStreamException{ for(int event = reader.next();event != XMLStreamConstants.END_DOCUMENT;event = reader.next()){ switch(event){ case XMLStreamConstants.START_DOCUMENT: System.out.println("start..."); //添加处理代码 break; case XMLStreamConstants.END_ELEMENT: System.out.println("end..."); break; //...可以继续添加想要监听事件 } } }

实现类似上面的函数,然后将前面例子的提取查询结果部分改为:

 

       reader=result.getItemAsStream();

       formatOutput(reader);

       这样即可。

 

 

 

你可能感兴趣的:(java,xml,jdbc,String,api,文档)