XML文件的解析(DOM4J)

该博客介绍了如何使用DOM4J库解析XML文件,将XML数据转换为Book类的对象。首先展示了XML文件的内容,接着定义了Book类的属性和构造方法。然后通过DOM4J的SAXReader读取XML文件,遍历book节点,提取id、name、author和price属性,创建Book对象并打印。这种方法使得XML数据更易于理解和操作。
摘要由CSDN通过智能技术生成

首先有一段xml文件如下,有三个子节点book,每个节点里有属性id,name,author,price

<books>
    <book id="000001">
        <name> 钢铁是怎样炼成的</name>
        <author> 尼古拉·奥斯特洛夫斯基</author>
        <price> 46.80</price>
    </book>

    <book id="000002">
        <name> 自然科学</name>
        <author> 牛顿</author>
        <price> 32.50</price>
    </book>

    <book id="000003">
        <name> 时间简史</name>
        <author> 霍金</author>
        <price> 55.50</price>
    </book>

</books>

XML文件的解析就是将XML文件里的数据提取出来,封装成对象,便于观看。所以创建相应的类BOOK类,里面有四个属性,创建相应的构造方法,set和get方法

public class Book {
    private String id;
    private String name;
    private String auther;
    private String price;

    public Book(String id, String name, String auther, String price) {
        this.id = id;
        this.name = name;
        this.auther = auther;
        this.price = price;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuther() {
        return auther;
    }

    public void setAuther(String auther) {
        this.auther = auther;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", auther='" + auther + '\'' +
                ", price=" + price +
                '}';
    }
}

使用DOM4J方法进行解析,是如今最流行的方法,需要jar包,在lib目录下是本次需要的jar包

编写解析方法,思路如下

/*         1 saxreader.read:创建输入流,读取XML文件,注意地址
           2 dom.getRootElement()获取对象根元素,再利用根元素根据标签名得到子元素集
           3 遍历子元素集合,可以通过asXML把标签对象转变成标签字符串查看
              3.1可以利用elements方法:根据标签名获得想要的元素标签,用getText方法,从标签中获取内容
              3.2 或者直接elementText方法,根据标签名获得里面内容
           4 标签的属性要用attributeValue(),标签的子元素是elementText()
           5 封装成对象,便于打印输出,完成对XML文件的解析,所以解析之前要知道节点标签有哪些,创建相应的类
 */public class Dom4j {
    public static void main(String[] args) {
        SAXReader saxreader = new SAXReader();          /* 创建一个输入流,去读取xml配置文件*/
        Document dom = null;
        try {                                                 //io流读取一般都有异常
            dom = saxreader.read("src/my/Books.xml");    //生成document对象
        } catch (Exception e) {
            e.printStackTrace();
        }

        Element rootEle = dom.getRootElement();        //获取对象根元素
        List<Element> books = rootEle.elements("book");           //element和elements都是根据标签名获取子元素

        for (Element e : books) {
            Element elename = e.element("name");
            //System.out.println(elename.asXML());              //asXML把标签对象转变成标签字符串
            String name = elename.getText();          //getText从标签中获取文本内容

            String author = e.elementText("author");
            String price = e.elementText("price");

            String id = e.attributeValue("id");           //获取属性

            Book book = new Book(id, name, author, price);
            System.out.println(book);
        }

    }

}

结果输出如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值