In Java, come faccio a analizzare XML come stringa anziché come file?

Ho il codice seguente:

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

Come posso far sì che analizzi l’XML contenuto in una stringa anziché in un file?

Ho questa funzione nella mia base di codice, questo dovrebbe funzionare per voi.

 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

Un modo è usare la versione di parse che prende un InputSource piuttosto che un file

Una sorgente di input SAX può essere costruita da un object Reader. Un object Reader è StringReader

Quindi qualcosa di simile

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

javadocs mostra che il metodo di analisi è sovraccarico.

Creare uno StringStream o InputSource usando la stringa XML e si dovrebbe essere impostato.

Converti la stringa in un InputStream e passala a DocumentBuilder

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

MODIFICARE
In risposta al commento di Bendin sulla codifica, vedere la risposta di shsteimer a questa domanda.

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; } 

È ansible utilizzare il pacchetto Scilca XML Progession disponibile su GitHub.

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