com.ibm.commons.xml.drivers.JAXPDriverXerces Maven / Gradle / Ivy
The newest version!
/*
* © Copyright IBM Corp. 2012
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.commons.xml.drivers;
import javax.xml.transform.TransformerException;
import org.apache.xml.utils.PrefixResolver;
import org.apache.xpath.XPathAPI;
import org.apache.xpath.objects.XObject;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.ibm.commons.util.StringUtil;
import com.ibm.commons.xml.NamespaceContext;
import com.ibm.commons.xml.XResult;
import com.ibm.commons.xml.XResultUtils;
import com.ibm.commons.xml.xpath.NodeListImpl;
import com.ibm.commons.xml.xpath.XPathException;
/**
* JAXP Driver using Xerces as the XPath engine.
*/
public class JAXPDriverXerces extends AbstractJAXPDriver {
// =========================================================================================
// XPATH
// =========================================================================================
// PHIL: temporary.
// Not optimized method. Should move to a precompiled XPath object
public Object createXPath(String xpath) throws XPathException {
return xpath;
}
public XResult evaluateXPath(Node node, Object xpath, NamespaceContext nsContext) throws XPathException {
try {
PrefixResolver pr = nsContext!=null ? new NSResolver(nsContext) : null;
XObject res = XPathAPI.eval(node,(String)xpath,pr);
return convertResult(res);
} catch(Exception e) {
throw new XPathException(e,"Error while evaluating XPath {0}",xpath.toString()); // $NLS-AbstractXercesDriver.ErrorwhileevaluatingXPath0-1$
}
}
public XResult evaluateXPath(NodeList nodeList, Object xpath, NamespaceContext nsContext) throws XPathException {
try {
if(nodeList.getLength()>0) {
XResult result = null;
NodeListImpl nodes = null;
PrefixResolver pr = nsContext!=null ? new NSResolver(nsContext) : null;
for( int i=0; i0) {
if(nodes==null) {
nodes = new NodeListImpl();
}
for( int j=0; j
© 2015 - 2025 Weber Informatics LLC | Privacy Policy