从xml到Java读取子节点的内容

时间:2014-01-22 19:00:21

标签: java xml

我一直在尝试读取这个xml并获取id,active和MAIN_ID的值并将其存储到java中的字符串值,因为我需要进一步处理每个值。但我可以读取Node文档,但是当我们循环文档时,我不确定如何获取id,active和MAIN_ID的值。有人可以给我解析这个xml的想法和最好的方法。

<add>
<document>
  <field name='id'>Summer id</field>
  <field name='active' update='add'>yes</field>
  <field name='MAIN_ID' update='add'>34242</field>
</doc>
<document>
  <field name='id'>winter id</field>
  <field name='active' update='add'>yes</field>
  <field name='MAIN_ID' update='add'>5354</field>
</document>
<doc>

现在这是我的代码。但是我不确定根据字段来检索子节点。

DocumentBuilder builder = factory.newDocumentBuilder();

        // create a new document from input stream and an empty systemId
        Document doc = builder.parse(url);

        // get the first element
        Element element = doc.getDocumentElement();
        System.out.println("element" + element);

        // get all child nodes
        NodeList nodes = element.getChildNodes();

        // print the text content of each child
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            if (node instanceof Element) {
                //need to know how to parse the child elements for above code
            }
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

首先考虑不使用XML中的属性来指定节点含义,所以改为使用类似

的内容
...
<document>
  <id>winter id</id>
  <active update='add'>yes</active>
  <MAIN_ID update='add'>5354</MAIN_ID>
</document>
...

如果您的文档很大,请考虑学习和使用SAX解析器。但是,如果要使用DOM,请查看org.w3c.dom.Element接口。关于如何使用DOM解析HTML,有很多关于SO的分步帖,如this one。但是对于名为&#34; document&#34;的元素,您需要getElementsByTagName,然后使用相同的方法从该元素中提取单个字段以获取id,active等。