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

  • 相关阅读:
    设计模式之责任链模式(Chain of Responsibility )
    Cubieboard2裸机开发之(二)板载LED交替闪烁
    Cubieboard2裸机开发之(一)点亮板载LED
    A20(Cubieboard2)启动过程浅析
    入手Cubieboard2之制作最小Linux系统
    ARM Linux启动代码分析
    Linux设备驱动剖析之Input(四)
    Linux设备驱动剖析之Input(三)
    Linux设备驱动剖析之Input(二)
    Linux设备驱动剖析之Input(一)
  • 原文地址:https://www.cnblogs.com/guokai870510826/p/5683964.html
Copyright © 2020-2023  润新知