How to parse a String containing XML in Java and retrieve the value of the root node? How to parse a String containing XML in Java and retrieve the value of the root node? xml xml

How to parse a String containing XML in Java and retrieve the value of the root node?


Using JDOM:

String xml = "<message>HELLO!</message>";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}

Using the Xerces DOMParser:

String xml = "<message>HELLO!</message>";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 }

Using the JAXP interfaces:

String xml = "<message>HELLO!</message>";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}


You could also use tools provided by the base JRE:

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


You could do this with JAXB (an implementation is included in Java SE 6).

import java.io.StringReader;import javax.xml.bind.*;import javax.xml.transform.stream.StreamSource;public class Demo {    public static void main(String[] args) throws Exception {        String xmlString = "<message>HELLO!</message> ";        JAXBContext jc = JAXBContext.newInstance(String.class);        Unmarshaller unmarshaller = jc.createUnmarshaller();        StreamSource xmlSource = new StreamSource(new StringReader(xmlString));        JAXBElement<String> je = unmarshaller.unmarshal(xmlSource, String.class);        System.out.println(je.getValue());    }}

Output

HELLO!