Java如何在JDOM中浏览XML元素树?

package org.nhooo.example.jdom;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.List;

public class JDOMTraversingElement {
    public static void main(String[] args) {
        String xml = "<root>" +
                "    <country name=\"Japan\" capital=\"Tokyo\"/>" +
                "    <country name=\"France\" capital=\"Paris\"/>" +
                "    <country name=\"Italy\" capital=\"Rome\"/>" +
                "    <country name=\"England\" capital=\"London\"/>" +
                "    <country name=\"Indonesia\" capital=\"Jakarta\"/>" +
                "    <city name=\"Denpasar\"/>" +
                "    <city name=\"Bangkok\"/>" +
                "    <city name=\"Mumbai\"/>" +
                "    <city name=\"Delhi\"/>" +
                "</root>";

        SAXBuilder builder = new SAXBuilder();
        try {
            Document document = builder.build(
                    new ByteArrayInputStream(xml.getBytes()));

            // 获取根元素
            Element root = document.getRootElement();

            // 生第一个孩子
            Element country = root.getChild("country");
            System.out.println("Name: " + country.getAttribute("name")
                    .getValue());
            System.out.println("Capital: " + country.getAttribute("capital")
                    .getValue());
            System.out.println("----------------------------------------");

            // 让所有的孩子都扎根
            List<Element> elements = root.getChildren();
            for (Element element : elements) {
                if (element.getName().equals("country")) {
                    System.out.println(MessageFormat.format("{0} -> {1}",
                            element.getAttribute("name").getValue(),
                            element.getAttribute("capital").getValue()));
                } else if (element.getName().equals("city")) {
                    System.out.println(element.getAttribute("name")
                            .getValue());
                }
            }
            System.out.println("----------------------------------------");

            // 让所有的孩子都扎根 named city
            List<Element> cities = root.getChildren("city");
            for (Element city : cities) {
                System.out.println(city.getAttribute("name").getValue());
            }
        } catch (JDOMException | IOException e) {
            e.printStackTrace();
        }
    }
}

代码段的结果是:

Name: Japan
Capital: Tokyo
----------------------------------------
Japan -> Tokyo
France -> Paris
Italy -> Rome
England -> London
Indonesia -> Jakarta
Denpasar
Bangkok
Mumbai
Delhi
----------------------------------------
Denpasar
Bangkok
Mumbai
Delhi

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar -->
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom2</artifactId>
    <version>2.0.6</version>
</dependency>

Maven中央