So I creates XpathUtil
Usage:
NodeList nodes =
(NodeList)new XPathUtil(file).evaluate("//directoryToRead/text()");
package com.util;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
public class XPathUtil {
private Log log = LogFactory.getLog(getClass().getName());
private Document doc = null;
private XPath xpath = null;
public XPathUtil(File inputFile) {
// begin:Recipe code to get xpath factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true); // never forget this!
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
doc = builder.parse(inputFile);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
}
XPathFactory xPathFactory = XPathFactory.newInstance();
xpath = xPathFactory.newXPath();
// end: recipe code to get xpath
}
public Object evaluate(String xPathExpression) {
XPathExpression expr;
Object result;
try {
expr = xpath.compile(xPathExpression);
result = expr.evaluate(doc, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
}
return result;
}
}
No hay comentarios.:
Publicar un comentario