字符串作为XQJ中的xml数据源

时间:2014-01-24 16:11:10

标签: xquery saxon xqj

我想使用XQJ实现来解析我的XML字符串,例如SAXON。我能找到的所有示例都涉及一些数据库连接。是否可以使用简单的String作为xml源?

2 个答案:

答案 0 :(得分:1)

Saxon有一个XQJ接口,您可以使用XQuery中的doc function(),例如: :

XQDataSource ds = new SaxonXQDataSource();
XQConnection conn = ds.getConnection();
XQPreparedExpression exp = conn.prepareExpression("doc('file:/some/file.xml')/child::node()");
XQResultSequence result = exp.executeQuery();
while(result.next()) {
    System.out.println(result.getItemAsString(null));
}

或直接将XML注入查询中。例如 -

XQDataSource ds = new SaxonXQDataSource();
XQConnection conn = ds.getConnection();
XQPreparedExpression exp = conn.prepareExpression("<a><b>test</b></a>/child::node()");
XQResultSequence result = exp.executeQuery();
while(result.next()) {
    System.out.println(result.getItemAsString(null));
}

答案 1 :(得分:1)

尝试使用

void    XQExpression.bindDocument(javax.xml.namespace.QName varName, javax.xml.transform.Source value, XQItemType type) 

使用XQConstants.CONTEXT_ITEM作为第一个参数,将StreamSource包装为StringReadeer作为第二个参数。