首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中解析包含XML的字符串并检索根节点的值?

如何在Java中解析包含XML的字符串并检索根节点的值?
EN

Stack Overflow用户
提问于 2011-12-07 07:41:16
回答 6查看 157.9K关注 0票数 40

我有一个字符串形式的XML,它包含

代码语言:javascript
运行
复制
<message>HELLO!</message> 

怎样才能得到字符串"Hello!“从XML?这应该是非常容易的,但是我迷路了。XML不在文档中,它只是一个字符串。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-07 08:08:54

使用

代码语言:javascript
运行
复制
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
}

使用 DOMParser

代码语言:javascript
运行
复制
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 
}

使用接口:

代码语言:javascript
运行
复制
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
}
票数 82
EN

Stack Overflow用户

发布于 2011-12-07 08:27:59

您可以使用JAXB来实现这一点( Java SE 6中包含了一个实现)。

代码语言:javascript
运行
复制
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());
    }

}

输出

代码语言:javascript
运行
复制
HELLO!
票数 8
EN

Stack Overflow用户

发布于 2011-12-07 08:38:23

您还可以使用基础JRE提供的工具:

代码语言:javascript
运行
复制
String msg = "<message>HELLO!</message>";
DocumentBuilder newDocumentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document parse = newDocumentBuilder.parse(new ByteArrayInputStream(msg.getBytes()));
System.out.println(parse.getFirstChild().getTextContent());
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8408504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档