получать внуков из XML в Java - PullRequest
5 голосов
/ 09 июня 2011

Мне нужно распечатать содержимое XML-файла в некоторый текстовый файл.Вот пример типа xml, который я хочу распечатать:

<log>
    <logentry revision="234">
        <author>SOMEGUY</author>
        <date>SOME DATE</date>
        <paths>
            <path>asdf/asdf/adsf/asdf.zip</path>
        </path>
        <msg>blahblahblah</msg>
    </logentry>
</log>

Я могу получить всю необходимую информацию, кроме тега path ... это то, что я сделал:

        FileWriter fstream = new FileWriter("c:\\work\\output.txt");
        BufferedWriter out = new BufferedWriter(fstream);

        Document document = (Document) builder.build(xmlFile);
        Element rootNode = document.getRootElement();
        List list = rootNode.getChildren("logentry");

        for (int i=0; i< list.size(); i++) {

            Element node = (Element) list.get(i);

            out.write("Revision: \n" + node.getAttributeValue("revision") + "\n\n");
            out.write("Author: \n"  + node.getChildText("author") + "\n\n");
            out.write("Date: \n"  + node.getChildText("date") + "\n\n");



            out.write("Message: \n"  + node.getChildText("msg"));
            out.write("\n-------------------------------------------------"
                    +"---------------------------------------------------\n\n");
        }
        out.close();

Итак, как, черт побери, я могу получить информацию из этого тега?

PS Не стесняйтесь переводить это в забвение, если это глупый вопрос ... до тех пор, пока вы ТАКЖЕ направляетея к ответу:)

Спасибо

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Вы можете перебрать детей paths:

...
List pathsChilds = node.getChildren("paths");
if(pathsChilds.size() > 0){
   Element paths = (Element)  pathsChilds.get(0);
   List pathChilds = paths.getChildren("path");
   for (int j=0; j< pathChilds.size(); j++) {
      Element path = (Element) pathChilds.get(j);
      out.write("Path: \n"  + path.getText() + "\n\n");
   }
}
0 голосов
/ 10 июня 2011

Используйте getElementsByTagName(), чтобы получить тег <paths>, а затем используйте его, чтобы получить его дочерние элементы.

О, это для элемента w3c.Для элемента JDOM jsut используйте getChild() и getChildren().

...