xml数据解析

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。

本文将介绍使用dom4j解析xml文件:

xml样例:

<?xml version="1.0" encoding="gb2312"?>
<Flight>
    <FlightDate>2010-2-5</FlightDate> 
    <FlightNote>成功</FlightNote> 
    <FlightNullCode>0</FlightNullCode> 
    <FlightInfo>
        <FlightCompany>北京航空公司</FlightCompany> 
        <FlightNo>SC4919</FlightNo> 
        <FlightDepcode>HFE</FlightDepcode> 
        <FlightArrcode>KWE</FlightArrcode> 
        <FlightDep>合肥</FlightDep> 
        <FlightArr>贵阳</FlightArr> 
        <FlightDeptimeReady>17:20</FlightDeptimeReady> 
        <FlightArrtimeReady>19:20</FlightArrtimeReady> 
        <FlightDeptime>false</FlightDeptime> 
        <FlightArrtime>false</FlightArrtime> 
        <FlightState>计划</FlightState> 
        <FlightTerminal>false</FlightTerminal> 
        <FlightHTerminal>false</FlightHTerminal> 
    </FlightInfo>
</Flight>

解析代码:

1):获取服务端xml文件

public static final Document getXML(String url) {
        Document document = null;
        SAXReader saxReader = new SAXReader();
        document = saxReader.read(url); //读取XML文件,获得document对象
        return document;
    }

2) :解析xml文件

    public static final Map<String, String> getXMLContent(String url) {
        Map<String, String> map= new HashMap<String, String>();
        Document document = getXML(url);
        Element root = document.getRootElement();
        Iterator<Element> elementItor = root.elementIterator();
        while (elementItor.hasNext()) {
            Element e1 = elementItor.next();
            Iterator<Element> FlightInfoItor = e1.elementIterator();
            while (FlightInfoItor.hasNext()) {
                Element e2 = FlightInfoItor.next();
                map.put(e2.getName(), e2.getText());
            }
        }
        return map;
    }

注意:如果xml文件中存在多个 <FlightInfo>节点,而且只需要该节点下的内容,代码如下:

    public static final List<Map<String, String>> getXMLContent(String url) {
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        Document document = getXML(url);
        Element root = document.getRootElement();
        Iterator<Element> elementItor = root.elementIterator();
        while (elementItor.hasNext()) {
            Element e1 = elementItor.next();
            if (!e1.getName().equalsIgnoreCase("FlightInfo")) {
                continue;
            }
            Iterator<Element> FlightInfoItor = e1.elementIterator();
            Map<String, String> map = new HashMap<String, String>();
            while (FlightInfoItor.hasNext()) {
                Element e2 = FlightInfoItor.next();
                map.put(e2.getName(), e2.getText());
            }
            list.add(map);
        }
        return list;
    }

温馨提示 使用dom4j解析xml需要dom4j.jar     下载链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值