/** * */ package org.openntf.domino.utils.xml; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; /** * @author jgallagher * */ public class XMLDocument extends XMLNode { private static final long serialVersionUID = -8106159267601656260L; public XMLDocument() { } public XMLDocument(final Node node) { super(node); } public XMLDocument(final String xml) throws SAXException, IOException, ParserConfigurationException { loadString(xml); } public XMLNode getDocumentElement() { return new XMLNode(((Document) node_).getDocumentElement()); } public void loadURL(final String urlString) throws SAXException, IOException, ParserConfigurationException { URL url = new URL(urlString); URLConnection conn = url.openConnection(); node_ = getBuilder().parse((InputStream) conn.getContent()); } public void loadInputStream(final InputStream is) throws SAXException, IOException, ParserConfigurationException { node_ = getBuilder().parse(is); } public void loadString(final String s) throws SAXException, IOException, ParserConfigurationException { loadInputStream(new ByteArrayInputStream(s.getBytes("UTF-8"))); } private DocumentBuilder getBuilder() throws ParserConfigurationException { DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); fac.setValidating(false); // fac.setNamespaceAware(true); return fac.newDocumentBuilder(); } public static String escapeXPathValue(final String input) { return input.replace("'", "\\'"); } @Override public String toString() { try { return getXml(null); } catch (IOException e) { return e.getMessage(); } } }