Cómo analizar una cadena que contiene XML en Java y recuperar el valor del nodo raíz?

Tengo XML en forma de una cadena que contiene

HELLO! 

¿Cómo puedo obtener la cadena “Hola”? del XML? Debería ser ridículamente fácil pero estoy perdido. El XML no está en un documento, es simplemente una cadena.

Usando JDOM :

 String xml = "HELLO!"; org.jdom.input.SAXBuilder saxBuilder = new SAXBuilder(); try { org.jdom.Document doc = saxBuilder.build(new StringReader(xml)); String message = doc.getRootElement().getText(); System.out.println(message); } catch (JDOMException e) { // handle JDOMException } catch (IOException e) { // handle IOException } 

Usando el Xerces DOMParser :

 String xml = "HELLO!"; DOMParser parser = new DOMParser(); try { parser.parse(new InputSource(new java.io.StringReader(xml))); Document doc = parser.getDocument(); String message = doc.getDocumentElement().getTextContent(); System.out.println(message); } catch (SAXException e) { // handle SAXException } catch (IOException e) { // handle IOException } 

Usando las interfaces JAXP :

 String xml = "HELLO!"; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xml)); try { Document doc = db.parse(is); String message = doc.getDocumentElement().getTextContent(); System.out.println(message); } catch (SAXException e) { // handle SAXException } catch (IOException e) { // handle IOException } } catch (ParserConfigurationException e1) { // handle ParserConfigurationException } 

También puede usar las herramientas proporcionadas por el JRE base:

 String msg = "HELLO!"; DocumentBuilder newDocumentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document parse = newDocumentBuilder.parse(new ByteArrayInputStream(msg.getBytes())); System.out.println(parse.getFirstChild().getTextContent());