解析xml文件用到了dom4j-1.6.1.jar包,具体版本可能有新旧之分,我提供如下某度云盘,供下载测试用。
链接:http://pan.baidu.com/s/1i5Aw8Jz 密码:qma7
下面是我的测试代码:

先是主要测试文件:

package com.lxk.xmlTest; 
 
import com.google.common.collect.Lists; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 
 
import java.io.File; 
import java.util.Arrays; 
import java.util.List; 
 
/** 
 * Created by lxk on 2016/11/10 
 */ 
public class XmlTest { 
    public static void main(String[] args) { 
        xmlTest(); 
    } 
 
    /** 
     * 测试解析xml文件 
     */ 
    @SuppressWarnings("unchecked") 
    private static void xmlTest() { 
        SAXReader reader = new SAXReader(); 
        reader.setEncoding("utf-8"); 
        Document document; 
        try { 
            document = reader.read(new File("src/testConfig.xml")); 
            Element root = document.getRootElement();//得到xml跟标签,此处是<root></root> 
            List<Element> list = root.elements("stream"); 
            List<XmlModel> xmlNodeList = Lists.newArrayList();//得到xml文件的配置信息 
            for (Element e : list) { 
                List<String> streamIds = Arrays.asList(e.element("streamId").getStringValue().split(",")); 
                XmlModel temp = new XmlModel(streamIds, e.element("name").getStringValue()); 
                xmlNodeList.add(temp); 
            } 
            for (XmlModel xmlModel : xmlNodeList) { 
                System.out.println(xmlModel); 
            } 
        } catch (DocumentException e) { 
            e.printStackTrace(); 
        } 
 
    } 
} 

然后是节点model文件:

package com.lxk.xmlTest; 
 
import java.util.List; 
 
/** 
 * 配置文件节点 model 
 * <p> 
 * Created by lxk on 2016/11/10 
 */ 
public class XmlModel { 
    /** 
     * 流ID 
     */ 
    private List<String> streamIds; 
    /** 
     * 流名称 
     */ 
    private String name; 
 
 
    /** 
     * 默认构造函数 
     * (在构造model的时候,若要添加新的带参数构造函数,那么这个默认函数一定要写。避免出现你不知道的错) 
     */ 
    public XmlModel() { 
    } 
 
    /** 
     * 带参构造函数 
     */ 
    public XmlModel(List<String> streamIds, String name) { 
        this.streamIds = streamIds; 
        this.name = name; 
    } 
 
    public List<String> getStreamIds() { 
        return streamIds; 
    } 
 
    public void setStreamIds(List<String> streamIds) { 
        this.streamIds = streamIds; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    @Override 
    public String toString() { 
        return "单个节点{" + 
                "streamIds=" + streamIds + 
                ", name='" + name + '\'' + 
                '}'; 
    } 
} 

最后是xml配置文件:(里面的标签随自己意取名,在Java文件对应就可以)

<?xml version="1.0" encoding="utf-8"?> 
 
<root> 
    <stream> 
        <streamId>576a32b7393048060fdeb463,57198f91c5e62fca950103fd</streamId> 
        <name>借记卡及贷记卡总量</name> 
    </stream> 
    <stream> 
        <streamId>57ba9ea8e4b040a7317c86a0,57f88f52e4b0fbcf8381665f</streamId> 
        <name>支付宝-借记卡</name> 
    </stream> 
    <stream> 
        <streamId>580f0b32e4b034a9cf9eaaa6</streamId> 
        <name>支付宝-贷记卡</name> 
    </stream> 
    <stream> 
        <streamId>580f058ee4b034a9cf9eaaa2</streamId> 
        <name>财付通-借记卡</name> 
    </stream> 
    <stream> 
        <streamId>57918dade4b0e55b2369e165</streamId> 
        <name>财付通-贷记卡</name> 
    </stream> 
    <stream> 
        <streamId>579af7c3e4b0c5e678ed9853</streamId> 
        <name>其他借记卡快捷类交易</name> 
    </stream> 
    <stream> 
        <streamId>580f0c2ae4b034a9cf9eaaa8</streamId> 
        <name>其他贷记卡快捷类交易</name> 
    </stream> 
</root> 

运行结果:


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java ConcurrentModificationException异常