Java examples for XML:XPath
get Text Value by XPath
import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main{ /*from w w w. j a v a 2 s .c o m*/ public static String getTextValue(Document doc, String nodeXpath) { Node node = findNodeByXpath(doc, nodeXpath); if (node != null) { return node.getTextContent(); } return null; } public static Node findNodeByXpath(Document doc, String xpath) { NodeList nodelist = findNodeListByXpath(doc, xpath); if (nodelist.getLength() > 0) { return nodelist.item(0); } return null; } public static NodeList findNodeListByXpath(Document doc, String xpath) { XPathFactory pathFactory = XPathFactory.newInstance(); //??XPathFactory???? XPath ?? XPath x_path = pathFactory.newXPath(); //??XPath????XPath???? Object obj = null; try { XPathExpression pathExpression = x_path.compile(xpath); obj = pathExpression.evaluate(doc, XPathConstants.NODESET); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException("Error while xpath search"); } NodeList nodelist = (NodeList) obj; return nodelist; } public static List<Node> findNodeListByXpath(Document doc, String xpath, NodeType nodeType) { XPathFactory pathFactory = XPathFactory.newInstance(); //??XPathFactory???? XPath ?? XPath x_path = pathFactory.newXPath(); //??XPath????XPath???? Object obj = null; try { XPathExpression pathExpression = x_path.compile(xpath); obj = pathExpression.evaluate(doc, XPathConstants.NODESET); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException("Error while xpath search"); } NodeList nodelist = (NodeList) obj; List<Node> nlist = new ArrayList<Node>(); for (int i = 0; i < nodelist.getLength(); i++) { Node n = nodelist.item(i); if (isNodeTypeMatches(n, nodeType)) { nlist.add(n); } } return nlist; } public static boolean isNodeTypeMatches(Node node, NodeType nodeType) { return ((int) node.getNodeType()) == nodeType.getValue(); } }