parse - string to xml java
En Java, ¿cómo puedo analizar XML como una cadena en lugar de un archivo? (6)
Tengo el siguiente código:
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
¿Cómo puedo hacer que analice el XML contenido dentro de una cadena en lugar de un archivo?
Convierta la cadena a un InputStream y pásela 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 sobre la codificación, vea la respuesta de shsteimer a esta pregunta.
Estoy usando este metodo
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("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
Tengo esta función en mi base de código, 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 vea esta pregunta similar
Una forma es usar la versión de análisis que toma un InputSource en lugar de un archivo
Un SAX InputSource puede construirse a partir de un objeto Reader. Un objeto Reader es el StringReader
Así que algo como
parse(new InputSource(new StringReader(myString))) may work.
javadocs muestra que el método de análisis está sobrecargado.
Cree un StringStream o InputSource utilizando su cadena XML y debe configurarlo.