Some handy utility methods for XPath:
import com.collaxa.cube.xml.xpath.SimpleNamespaceContext;import java.util.*;
import javax.xml.namespace.NamespaceContext;
import javax.xml.xpath.*;
import oracle.bpel.services.common.util.XMLUtil;
import oracle.tip.pc.infra.exception.PCException;
import oracle.xml.xpath.JXPathFactory;
import org.w3c.dom.*;
public class XPathUtils
{
public XPathUtils()
{
}
public static NodeList selectNodes(Element pElement, String xpathExpression)
throws Exception
{
XPath xPath = createXPath();
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
NodeList value = (NodeList)xPath.evaluate(xpathExpression, doc, XPathConstants.NODESET);
return value;
}
public static NodeList selectNodes(Element pElement, String xpathExpression, Map prefixNamespaceMapping)
throws Exception
{
XPath xPath = createXPath(prefixNamespaceMapping);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
NodeList value = (NodeList)xPath.evaluate(xpathExpression, doc, XPathConstants.NODESET);
return value;
}
public static NodeList selectNodes(Element pElement, String xpathExpression, NamespaceContext namespaceContext)
throws Exception
{
XPath xPath = createXPath(namespaceContext);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
NodeList value = (NodeList)xPath.evaluate(xpathExpression, doc, XPathConstants.NODESET);
return value;
}
public static Object evaluate(Element pElement, String xpathExpression)
throws Exception
{
XPath xPath = createXPath();
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Object value = xPath.evaluate(xpathExpression, doc, XPathConstants.NODESET);
return value;
}
public static Object evaluate(Element pElement, String xpathExpression, Map prefixNamespaceMapping)
throws Exception
{
XPath xPath = createXPath(prefixNamespaceMapping);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Object value = xPath.evaluate(xpathExpression, doc, XPathConstants.NODESET);
return value;
}
public static Object selectSingleNode(Element pElement, String xpathExpression)
throws Exception
{
XPath xPath = createXPath();
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Node value = (Node)xPath.evaluate(xpathExpression, doc, XPathConstants.NODE);
return value;
}
public static Object selectSingleNode(Element pElement, String xpathExpression, Map prefixNamespaceMapping)
throws Exception
{
XPath xPath = createXPath(prefixNamespaceMapping);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Node value = (Node)xPath.evaluate(xpathExpression, doc, XPathConstants.NODE);
return value;
}
public static String valueOf(Element pElement, String xpathExpression)
throws Exception
{
XPath xPath = createXPath();
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
String value = (String)xPath.evaluate(xpathExpression, doc, XPathConstants.STRING);
return value;
}
public static String valueOf(Element pElement, String xpathExpression, Map prefixNamespaceMapping)
throws Exception
{
XPath xPath = createXPath(prefixNamespaceMapping);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
String value = (String)xPath.evaluate(xpathExpression, doc, XPathConstants.STRING);
return value;
}
public static Number numberValueOf(Element pElement, String xpathExpression)
throws Exception
{
XPath xPath = createXPath();
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Number nValue = (Number)xPath.evaluate(xpathExpression, doc, XPathConstants.NUMBER);
return nValue;
}
public static Number numberValueOf(Element pElement, String xpathExpression, Map prefixNamespaceMapping)
throws Exception
{
XPath xPath = createXPath(prefixNamespaceMapping);
Document doc = null;
if(pElement instanceof Document)
doc = (Document)pElement;
else
doc = pElement != null ? pElement.getOwnerDocument() : null;
Number nValue = (Number)xPath.evaluate(xpathExpression, doc, XPathConstants.NUMBER);
return nValue;
}