/** * Get Xpath Text Contents */ public List<Element> getXpathElements(String xpathExpression) throws TransformerException, XPathExpressionException { NodeList nodeList = getNodeList(xpathExpression); if (nodeList.getLength() == 0) { return Collections.emptyList(); } StringBuilder buf = new StringBuilder(); List<Element> list = new ArrayList<Element>(); for (int i = 0; i < nodeList.getLength(); i++) { Element element = (Element) nodeList.item(i); list.add(element); buf.append("<b>Element [").append(i).append("]:</b>").append(HighlighterUtils.INSTANCE.highlightXML(XMLFormatter.prettyPrint(element))); } LOG.pureHtml(buf.toString()); return list; }
@Override public Object execute(Object[] params) throws ParserConfigurationException, IOException, SAXException { try { String xmlString = XMLFormatter.prettyPrint((Element) params[0]); String xpathExpression = String.valueOf(params[1]); DOMParser parser = new DOMParser(); parser.parse(new InputSource(new StringReader(xmlString))); Document document = parser.getDocument(); Element result = (Element) XPathAPI.selectSingleNode(document, xpathExpression); if(result == null) { throw new IllegalStateException(String.format("No element found given the expression %s.", xpathExpression)); } StringBuilder buf = new StringBuilder(); buf.append(String.format("Xpath Expression = \"%s\"\n", xpathExpression)); buf.append(String.format("Text Content = \"%s\"", result.getTextContent())); LOG.pureHtml("<b>Get XPath Element Text Content:</b>" + HighlighterUtils.INSTANCE.highlightText(buf.toString())); LOG.pureHtml("<b>Element XML String:</b>" + HighlighterUtils.INSTANCE.highlightXML(xmlString)); return result.getTextContent(); } catch (TransformerException e) { throw new IllegalArgumentException(String.format("Error while getting element for xpath expression %s'.", params[0])); } } }
/** * Get Xpath Text Contents */ public List<Element> getXpathElements(Element base, String xpathExpression) throws TransformerException, IOException, SAXException, XPathExpressionException, ParserConfigurationException { NodeList nodeList = getNodeList(base, xpathExpression); if (nodeList.getLength() == 0) { return Collections.emptyList(); } StringBuilder buf = new StringBuilder(); List<Element> list = new ArrayList<Element>(); for (int i = 0; i < nodeList.getLength(); i++) { Element element = (Element) nodeList.item(i); list.add(element); buf.append("<b>Element [").append(i).append("]:</b>").append(HighlighterUtils.INSTANCE.highlightXML(XMLFormatter.prettyPrint(element))); } LOG.pureHtml(buf.toString()); return list; }