Wie kann man einen String, der XML enthält, in Java parsen und den Wert des Wurzelknotens abrufen?

Ich habe XML in Form eines Strings, der Folgendes enthält

<message>HELLO!</message> 

Wie kann ich die Zeichenfolge "Hallo!" aus dem XML abrufen? Es sollte lächerlich einfach sein, aber ich bin ratlos. Die XML ist nicht in einem Dokument, es ist einfach ein String.

Lösung

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

Verwendung des 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 
}

Verwendung der JAXP Schnittstellen:

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
}
Kommentare (1)

Es gibt die Möglichkeit, XML richtig zu lesen, und die Möglichkeit, nur das Nötigste zu tun, um weiterzukommen. Richtig machen würde es mit ordnungsgemäßen Dokument-Parsing sein.

Oder... dodgy wäre mit benutzerdefinierten Text-Parsing mit entweder wisuzu's Antwort oder mit regulären Ausdrücken mit Matchern.

Kommentare (1)

Ich denke, Sie würden in der Klasse String suchen, es gibt mehrere Möglichkeiten, es zu tun. Was ist mit substring(int,int) und indexOf(int) lastIndexOf(int)?

Kommentare (1)