Tengo un documento XML completo en una cadena y me gustaría un objeto Document
. Google aparece todo tipo de basura. ¿Cuál es la solución más simple? (En Java 1.5)¿Cómo cargo un org.w3c.dom.Document desde XML en una cadena?
Solución Gracias a Matt McMinn, me he decidido por esta implementación. Tiene el nivel correcto de flexibilidad de entrada y granularidad de excepción para mí. (Es bueno saber si el error proviene de malformación XML - SAXException
- o simplemente mala IO - IOException
.)
public static org.w3c.dom.Document loadXMLFrom(String xml)
throws org.xml.sax.SAXException, java.io.IOException {
return loadXMLFrom(new java.io.ByteArrayInputStream(xml.getBytes()));
}
public static org.w3c.dom.Document loadXMLFrom(java.io.InputStream is)
throws org.xml.sax.SAXException, java.io.IOException {
javax.xml.parsers.DocumentBuilderFactory factory =
javax.xml.parsers.DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
javax.xml.parsers.DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
}
catch (javax.xml.parsers.ParserConfigurationException ex) {
}
org.w3c.dom.Document doc = builder.parse(is);
is.close();
return doc;
}
Sería bueno si se puede corregir la solución. El uso de String.getByptes y InputStream impone problemas i18n. Uno de mis amigos obtuvo el código de aquí como es, lo que está mal. Suerte que findbugs detectó el problema. La solución correcta provista por erickson es usar InputSource. –