首先导入jar包dom4j;
需要解析的xml文件:
如下:
<?xml version="1.0" encoding="UTF-8"?> <config> <item KEY="CUST_ID" TAG="客户ID"/> <item KEY="CUST_NAM" TAG="客户名称"/> <item KEY="AGENTID" TAG="代理商ID"/> <item KEY="IDCARD" TAG="身份证号码"/> <item KEY="AGTNAM" TAG="代理商名称"/> <item KEY="CTY_NAME" TAG="所属省份"/> <item KEY="APPLRDAT" TAG="申请日期"/> <item KEY="MYSTS" TAG="客户状态"/> <item KEY="TXN_CON_NUM" TAG="累计刷卡次数"/> <item KEY="TXN_CON_AMT" TAG="累计刷卡金额"/> </config>
然后封装解析类:
/**
*
*/
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @author Administrator
*
*/
public class DomXml {
public static LinkedHashMap<String, String> xml(String path) throws DocumentException {
String p = "src/main/resources/titlexml/";//设置需要解析文件的路径,
String path1 = p+path;//将路径与文件拼接成完整路径
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(path1));//"src/main/resources/titlexml/customerInfo.xml"
Element root = doc.getRootElement();//获取根节点
List childList = root.elements();//获取根节点下节点数目
LinkedHashMap<String, String> map = new LinkedHashMap<String,String>();
for (int i = 1; i <= childList.size(); i++) {
//子节点的操作
Element it = (Element) childList.get(i-1);
map.put(i+"", it.attribute("TAG").getValue());
}
return map;
}
/**
*
* @param path
* @return
* @throws DocumentException
*/
public static List<String> xmlExcel(String path) throws DocumentException {
String p = "src/main/resources/titlexml/";//设置需要解析文件的路径
String path1 = p+path;
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(path1));
Element root = doc.getRootElement();//获取根节点
List childList = root.elements();//获取根节点下节点数目
List<String> list = new ArrayList<String>();
for (int i = 0; i < childList.size(); i++) {
//子节点的操作
Element it = (Element) childList.get(i);
list.add(it.attribute("TAG").getValue());
}
return list;
}
}
如果子节点还有子节点
那么取值的方法是:
List childList1 = it.elements();
总结一下,就是先拿到跟节点
Document doc = reader.read(new File(path1));
Element root = doc.getRootElement();//获取根节点
然后取子节点
List childList = root.elements();//获取根节点下节点数目
子节点的子节点取法
Element it1 = (Element) childList.get(1); //取根节点的第二个子节点
List childList1 = it1.elements();//取根节点的第二个子节点的所有子节点
Element it = (Element) childList1.get(0);//取根节点的第二个子节点的第一个子节点
it.attribute("ref").getValue();//取根节点的第二个子节点的第一个子节点的值