XML的解析

本文通过具体实例介绍了如何使用Dom4j和X-Path进行XML文件的读取与解析,包括节点的获取、属性值的读取及条件筛选等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先新建一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

Dom4j查找XML;需要导入Dom4j的jar包:

package cn.itcast.dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DomDemo {
    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        //获取documnet
        Document doc = new SAXReader().read("D:\\MyEclipse10\\day04\\xml\\bookstore.xml");
        //获取根节点
        Element root=doc.getRootElement();
        //获取其他节点
        List<Element>list= root.elements();
        for(Element book:list)
        {
            //获取book的 category
            String value=book.attributeValue("category");
            System.out.println(value);//结果为COOKING CHILDREN WEB
            //获取title的文本
            String text=book.elementText("title");
            System.out.println(text);//结果EverydayItalian Harry Potter Learning XML

        }
    }
}

利用X-Path解析:导入jar包(dom4j.jar和jaxen-1.1-beta-6.jar):

package cn.itcast.xpath;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XpathDemo {
    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        //获取根节点
        Document doc=new SAXReader().read("D:\\MyEclipse10\\day04\\xml\\bookstore.xml");
        //获取year
        List<Element> list=doc.selectNodes("//year");
        for(Element year:list )
        {
            System.out.println(year.getText());//结果为2005,2005,2003
        }
        //获取价格大与30的书名
        Element title=(Element) doc.selectSingleNode("//book[price>30]/title");
        Element title1=(Element) doc.selectSingleNode("//book[@category='COOKING']/title");
        System.out.println(title.getText());//结果为Learning XML
        System.out.println(title1.getText());//结果为Everyday Italian
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值