Here you can find the source of xpathNodeList(String expr, Document doc)
public static NodeList xpathNodeList(String expr, Document doc) throws Exception
//package com.java2s; /*//from ww w. ja v a 2 s .c om * 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.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main { private static XPath xpath = XPathFactory.newInstance().newXPath(); /***************/ public static NodeList xpathNodeList(String expr, String xml) throws Exception { return xpathNodeList(expr, createDocument(xml)); } public static NodeList xpathNodeList(String expr, Document doc) throws Exception { return (NodeList) xpath.evaluate(expr, doc, XPathConstants.NODESET); } public static Document createDocument(String xml) throws Exception { DocumentBuilder db = createDocumentBuilder(); return db.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")), "UTF-8"); } public static Document createDocument(Node sourceNode) throws Exception { Document doc = createDocumentBuilder().newDocument(); Node source; if (sourceNode.getNodeType() == Node.DOCUMENT_NODE) { source = ((Document) sourceNode).getDocumentElement(); } else { source = sourceNode; } Node node = doc.importNode(source, true); doc.appendChild(node); return doc; } public static DocumentBuilder createDocumentBuilder() throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setIgnoringComments(true); return dbf.newDocumentBuilder(); } }