XML文件解析

首先导入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();//取根节点的第二个子节点的第一个子节点的值

原文地址:https://www.cnblogs.com/guokai870510826/p/5683964.html