Java tutorial
//package com.java2s; /* * #%L * i2b2 Export Service * %% * Copyright (C) 2013 Emory University * %% * 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. * #L% */ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import java.io.IOException; import java.io.StringReader; public class Main { /** * Gets the object at the given XPath in the given XML node. See also: * {@link #evalXPath(String, String, javax.xml.namespace.QName)}. * * @param d the node to look in * @param expr the XPath expression to evaluate * @param returnType the expected return type of the object * @return the object at the specified XPath in the node * @throws XPathExpressionException if an error occurs processing the XPath * expression */ static Object evalXPath(Node d, String expr, QName returnType) throws XPathExpressionException { return XPathFactory.newInstance().newXPath().compile(expr).evaluate(d, returnType); } /** * Gets the object at the given XPath in the given XML string. See also: * {@link #evalXPath(org.w3c.dom.Node, String, javax.xml.namespace.QName)}. * * @param xml the XML string to look in * @param expr the XPath expression to evaluate * @param returnType expected return type of the object * @return the object at the specified XPath in the XML string * @throws XPathExpressionException if an error occurs while processing the * XPath expression * @throws SAXException if an error occurs converting the XML string to an * XML node * @throws IOException if a general IO error occurs * @throws ParserConfigurationException if an error occurs configuring the * parser */ static Object evalXPath(String xml, String expr, QName returnType) throws XPathExpressionException, SAXException, IOException, ParserConfigurationException { return evalXPath(xmlStringToDocument(xml), expr, returnType); } /** * Converts an XML string into an equivalent XML document. Applies the * reverse operation of {@link #xmlDocumentToString(org.w3c.dom.Node)}. * * @param xml the XML string to convert * @return a {@link Document} equivalent to the specified XML string * @throws SAXException if an error occurs building the XML document * @throws IOException if a general IO error occurs * @throws ParserConfigurationException if an error occurs configuring the * XML parser */ static Document xmlStringToDocument(String xml) throws SAXException, IOException, ParserConfigurationException { return DocumentBuilderFactory.newInstance().newDocumentBuilder() .parse(new InputSource(new StringReader(xml))); } }