En Java, ¿cómo analizo XML como una cadena en lugar de un archivo?

Tengo el siguiente código:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile); 

¿Cómo puedo obtener analizar XML contenido dentro de una cadena en lugar de un archivo?

Tengo esta función en mi código base, esto debería funcionar para usted.

 public static Document loadXMLFromString(String xml) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(xml)); return builder.parse(is); } 

también veo esta pregunta similar

Una forma es usar la versión de parse que toma un InputSource en lugar de un archivo

Un SAX InputSource se puede construir a partir de un objeto Reader. Un objeto de Reader es el StringReader

Así que algo así como

 parse(new InputSource(new StringReader(myString))) may work. 

Los javadocs muestran que el método de análisis está sobrecargado.

Cree un StringStream o InputSource usando su cadena XML y usted debería estar configurado.

Convierta la cadena a un InputStream y páselo a DocumentBuilder

 final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8)); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); builder.parse(stream); 

EDITAR
En respuesta al comentario de bendin con respecto a la encoding, ver la respuesta de shsteimer a esta pregunta.

Estoy usando este método

 public Document parseXmlFromString(String xmlString){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes()); org.w3c.dom.Document document = builder.parse(inputStream); return document; } 

Puede usar el paquete Scilca XML Progession disponible en GitHub.

 XMLIterator xi = new VirtualXML.XMLIterator(""); XMLReader xr = new XMLReader(xi); Document d = xr.parseDocument();