Java如何使用JDOM读取XML文档?

此示例提供了一个有关如何使用JDOM解析XML文档,迭代每个元素以及读取元素或属性值的小代码段。要使用此示例,您必须具有JDOM库。您可以从JDOM网站下载它。

package org.nhooo.example.jdom;

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

import java.io.ByteArrayInputStream;
import java.util.List;

public class ReadXmlDocument {
    public static void main(String[] args) {
        // 本示例中要处理的虚构xml文件。
        String data = "<root>" +
                "<row>" +
                "<column name=\"username\" length=\"16\">admin</column>" +
                "<column name=\"password\" length=\"128\">secret</column>" +
                "</row>" +
                "<row>" +
                "<column name=\"username\" length=\"16\">jdoe</column>" +
                "<column name=\"password\" length=\"128\">password</column>" +
                "</row>" +
                "</root>";

        // 创建一个SAXBuilder实例
        SAXBuilder builder = new SAXBuilder();
        try {
            // 告诉SAXBuilder从中构建Document对象。
            // 提供了InputStream。
            Document document = builder.build(
                    new ByteArrayInputStream(data.getBytes()));

            // 获取我们的xml文档根元素,该元素等于
            // <root> tag in the xml document.
            Element root = document.getRootElement();

            // Get all the children named with <row> in the document.
            // 该方法将子级作为java.util.List返回
            // 目的。
            List rows = root.getChildren("row");
            for (int i = 0; i < rows.size(); i++) {
                // 将每一行转换为Element对象并获取其
                // children which will return a collection of <column>
                //元素。当我们必须列元素时,我们可以阅读
                // 如上定义的属性值(名称,长度)
                // and also read its value (between the <column></column>
                // 标签),方法是调用getText()方法。
                //
                // getAttribute()方法还提供了一种方便的方法
                // 如果我们想将属性值转换为正确的
                // org.nhooo.data类型,在该示例中,我们读取了length属性
                // 值作为整数。
                Element row = (Element) rows.get(i);
                List columns = row.getChildren("column");
                for (int j = 0; j < columns.size(); j++) {
                    Element column = (Element) columns.get(j);
                    String name = column.getAttribute("name").getValue();
                    String value = column.getText();
                    int length = column.getAttribute("length").getIntValue();

                    System.out.println("name = " + name);
                    System.out.println("value = " + value);
                    System.out.println("length = " + length);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

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中央