Risposte:
Ho questa funzione nella mia base di codice, questo dovrebbe funzionare per te.
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);
}
vedi anche questa domanda simile
import org.xml.sax.InputSource;
Convertire la stringa in InputStream e passarla a DocumentBuilder
final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);
EDIT
In risposta alla bendin 's commento per quanto riguarda la codifica, vedi shsteimer ' la risposta a questa domanda s.
Sto usando questo 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;
}
Puoi usare il pacchetto Scilca XML Progession disponibile su GitHub.
XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
javax.xml.parsers.DocumentBuilder.parse(string)
presume che la stringa sia un uri (terribile ...)