如何在Java中将String解析为XML文档?

时间:2016-08-30 12:42:40

标签: java xml-parsing

我正在尝试将包含XML的字符串解析为Java中的文档对象。这是该方法的源代码:

private Document getDocument(String xml) {

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
    DocumentBuilder builder = null;  

    try {
        builder = factory.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    }

    Document doc = null;
    try {
        doc = builder.parse(new InputSource(new StringReader(xml)));
    } catch (SAXException e) {
        System.out.println(e.toString());
    } catch (IOException e) {
        System.out.println(e.toString());
    }

    return doc;
}

根据调试器,我总是得到的doc变量的值是

  

[#document:null]

有没有人知道出了什么问题?

感谢您的时间!

2 个答案:

答案 0 :(得分:2)

这是正常的,因为调试器正在调用Document#toString()来打印[node_name: node_value]。根据{{​​3}},文档节点的节点值为空。如果要打印根元素的名称,则应评估doc.getDocumentElement().getNodeName()

答案 1 :(得分:1)

如果你发布XML文档以查看结构会很好,但这就是我读取XML的方法。

    // Opening and creating file Objects
    File inputFile = new File(xmlFile);
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(inputFile);
    doc.getDocumentElement().normalize();

之后,您可以使用doc.getElementsByTagName("Root Node");获取XML的根节点。该对象具有很多属性,例如getFirstChild()getChildNodes(),具体取决于结构,Ill建议阅读:

http://www.w3schools.com/xml/dom_intro.asp