Em Java, como faço para analisar XML como uma String em vez de um arquivo?

Eu tenho o seguinte código:

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

Como posso obtê-lo para analisar o XML contido em uma String em vez de um arquivo?

Eu tenho essa function na minha base de código, isso deve funcionar para você.

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

veja também essa pergunta semelhante

Uma maneira é usar a versão da análise que usa um InputSource em vez de um arquivo

Um SAX InputSource pode ser construído a partir de um object Reader. Um object do Reader é o StringReader

Então, algo como

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

Os javadocs mostram que o método de análise está sobrecarregado.

Crie um StringStream ou InputSource usando sua string XML e você deve estar definido.

Converta a string em um InputStream e passe-a para o DocumentBuilder

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

EDITAR
Em resposta ao comentário de Bendin sobre a codificação, veja a resposta de Shsteimer a esta questão.

Estou usando esse 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; } 

Você pode usar o pacote Scilca XML Progession disponível no GitHub.

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