use of net.sf.saxon.s9api.XdmItem in project sirix by sirixdb.
the class TestNodeWrapperS9ApiXQuery method testOrderByBooks.
@Test
public void testOrderByBooks() throws Exception {
final XdmValue value = new XQueryEvaluator("for $x in /bookstore/book where $x/price>30 order by $x/title return $x/title", mHolder.getSession()).call();
final StringBuilder strBuilder = new StringBuilder();
for (final XdmItem item : value) {
strBuilder.append(item.toString());
}
assertEquals("<title lang=\"en\">Learning XML</title><title lang=\"en\">XQuery Kick Start</title>", strBuilder.toString());
}
use of net.sf.saxon.s9api.XdmItem in project sirix by sirixdb.
the class TestNodeWrapperS9ApiXQuery method testFLOWR.
@Test
public void testFLOWR() throws Exception {
final XdmValue value = new XQueryEvaluator("for $x in /bookstore/book let $y := $x/price where $y>30 order by $x/title return $x/title", mHolder.getSession()).call();
final StringBuilder strBuilder = new StringBuilder();
for (final XdmItem item : value) {
strBuilder.append(item.toString());
}
assertEquals("<title lang=\"en\">Learning XML</title><title lang=\"en\">XQuery Kick Start</title>", strBuilder.toString());
}
use of net.sf.saxon.s9api.XdmItem in project jmeter by apache.
the class XPathUtilTest method testBug63033.
@Test
public void testBug63033() throws SaxonApiException {
Processor p = new Processor(false);
XPathCompiler c = p.newXPathCompiler();
c.declareNamespace("age", "http://www.w3.org/2003/01/geo/wgs84_pos#");
String xPathQuery = "//Employees/Employee[1]/age:ag";
XPathExecutable e = c.compile(xPathQuery);
XPathSelector selector = e.load();
selector.setContextItem(p.newDocumentBuilder().build(new StreamSource(new StringReader(xmlDoc))));
XdmValue nodes = selector.evaluate();
XdmItem item = nodes.itemAt(0);
assertEquals("<age:ag xmlns:age=\"http://www.w3.org/2003/01/geo/wgs84_pos#\">29</age:ag>", item.toString());
}
use of net.sf.saxon.s9api.XdmItem in project jmeter by apache.
the class XPathUtil method putValuesForXPathInListUsingSaxon.
public static void putValuesForXPathInListUsingSaxon(String xmlFile, String xPathQuery, List<String> matchStrings, boolean fragment, int matchNumber, String namespaces) throws SaxonApiException, FactoryConfigurationError {
// generating the cache key
final ImmutablePair<String, String> key = ImmutablePair.of(xPathQuery, namespaces);
// check the cache
XPathExecutable xPathExecutable;
if (StringUtils.isNotEmpty(xPathQuery)) {
xPathExecutable = XPATH_CACHE.get(key);
} else {
log.warn("Error : {}", JMeterUtils.getResString("xpath2_extractor_empty_query"));
return;
}
try (StringReader reader = new StringReader(xmlFile)) {
// We could instantiate it once but might trigger issues in the future
// Sharing of a DocumentBuilder across multiple threads is not recommended.
// However, in the current implementation sharing a DocumentBuilder (once initialized)
// will only cause problems if a SchemaValidator is used.
net.sf.saxon.s9api.DocumentBuilder builder = PROCESSOR.newDocumentBuilder();
XdmNode xdmNode = builder.build(new SAXSource(new InputSource(reader)));
if (xPathExecutable != null) {
XPathSelector selector = null;
try {
selector = xPathExecutable.load();
selector.setContextItem(xdmNode);
XdmValue nodes = selector.evaluate();
int length = nodes.size();
int indexToMatch = matchNumber;
// In case we need to extract everything
if (matchNumber < 0) {
for (XdmItem item : nodes) {
if (fragment) {
matchStrings.add(item.toString());
} else {
matchStrings.add(item.getStringValue());
}
}
} else {
if (indexToMatch <= length) {
if (matchNumber == 0 && length > 0) {
indexToMatch = JMeterUtils.getRandomInt(length) + 1;
}
XdmItem item = nodes.itemAt(indexToMatch - 1);
matchStrings.add(fragment ? item.toString() : item.getStringValue());
} else {
if (log.isWarnEnabled()) {
log.warn("Error : {}{}", JMeterUtils.getResString("xpath2_extractor_match_number_failure"), indexToMatch);
}
}
}
} finally {
if (selector != null) {
try {
selector.getUnderlyingXPathContext().setContextItem(null);
} catch (Exception e) {
// NOSONAR Ignored on purpose
// NOOP
}
}
}
}
}
}
Aggregations