2

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

4

2 回答 2

1

尝试使用

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

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

于 2014-01-24T23:47:57.447 回答
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));
}
于 2014-01-24T17:52:34.853 回答