解析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>
运行结果: