Respuestas:
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
import org.xml.sax.InputSource;
Los javadocs muestran que el método de análisis está sobrecargado.
Cree un StringStream o InputSource utilizando su XML de cadena y debería estar configurado.
Convierta la cadena en 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 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();
javax.xml.parsers.DocumentBuilder.parse(string)
supone que la cadena es un uri (terrible ...)