欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用JDOM读取XML文件

程序员文章站 2022-05-28 12:34:41
...
books.xml:
<?xml version="1.0" encoding="utf-8" ?>
<books>
    <book id="001">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <price>$50.2</price>
    </book>
    <book id="002">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <price>$90</price>
    </book>
</books>
引入jdom包的maven依赖:
<!-- https://mvnrepository.com/artifact/org.jdom/jdom/2.0.0-->
    <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>2.0.0</version>
    </dependency>
读取xml文件程序:
import org.jdom2.Document;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.File;
import java.io.IOException;

public class MyXmlReader {
    static class Book{
        String title;
        String author;
        String price;

        public Book(String title, String author, String price) {
            this.title = title;
            this.author = author;
            this.price = price;
        }

        public void read(){
            System.out.println("title: "+title+"  author: "+author+"  price: "+price);
        }
    }


    public static void main(String[] args) {
        try {
            SAXBuilder builder = new SAXBuilder();
            Document document = builder.build(new File("src/main/resources/books.xml"));
            document.getRootElement().getChildren().stream()
                    .map(child->{
                        return new Book(child.getChildText("title")
                                ,child.getChildText("author")
                                ,child.getChildText("price"));
                    }).forEach(Book::read);

        }catch (IOException | JDOMException e){
            e.printStackTrace();
        }
    }
}

输出结果:
title: Harry Potter  author: J K. Rowling  price: $50.2
title: Learning XML  author: Erik T. Ray  price: $90
相关标签: Java xml