Java tutorial
//package com.java2s; /* * CDDL HEADER START * * The contents of this file are subject to the terms of the Common Development and Distribution * License, Version 1.0 only (the "License"). You may not use this file except in compliance with * the License. * * You can obtain a copy of the license at license/ESCIDOC.LICENSE or * http://www.escidoc.org/license. See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each file and include the License * file at license/ESCIDOC.LICENSE. If applicable, add the following below this CDDL HEADER, with * the fields enclosed by brackets "[]" replaced with your own identifying information: Portions * Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ import java.io.ByteArrayInputStream; 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.XPathFactory; import org.w3c.dom.Document; public class Main { private static XPath xpath = XPathFactory.newInstance().newXPath(); public static Double xpathNumber(String expr, String xml) { return xpathNumber(expr, createDocument(xml)); } public static Double xpathNumber(String expr, Document doc) { try { return (Double) xpath.evaluate(expr, doc, XPathConstants.NUMBER); } catch (Exception e) { throw new RuntimeException("Cannot evaluate XPath:", e); } } /** * Creates new empty org.w3c.dom.Document * * @return org.w3c.dom.Document * @throws CitationStyleManagerException */ public static Document createDocument() { return createDocumentBuilder().newDocument(); } /** * Creates new org.w3c.dom.Document * * @param xml * @return org.w3c.dom.Document * @throws RuntimeException */ public static Document createDocument(String xml) { try { return createDocument(xml.getBytes("UTF-8")); } catch (Exception e) { throw new RuntimeException("Cannot create Document", e); } } /** * Creates new org.w3c.dom.Document * * @param xml * @return org.w3c.dom.Document * @throws CitationStyleManagerException * @throws IOException * @throws SAXException * @throws Exception */ public static Document createDocument(byte[] xml) { DocumentBuilder db = createDocumentBuilder(); try { return db.parse(new ByteArrayInputStream(xml), "UTF-8"); } catch (Exception e) { throw new RuntimeException("Cannot create Document", e); } } /** * Builds new DocumentBuilder * * @return DocumentBuilder * @throws CitationStyleManagerException */ public static DocumentBuilder createDocumentBuilder() { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setIgnoringComments(true); dbf.setNamespaceAware(false); try { return dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new RuntimeException("Failed to create a document builder factory", e); } } }