使用Dom4j解析XML文件

tech2022-10-14  114

1、测试文件

<?xml version="1.0" encoding="UTF-8"?> <root> <cousic tableName="小明"> <title>哈哈哈</title> <why>开心</why> </cousic> <cousic tableName="小龙"> 小小 </cousic> <cousic tableName="小狗">万达广场</cousic> </root>

2、依赖--dom4j-2.1.3+jaxen-1.2.0

链接:https://pan.baidu.com/s/135qf9HKOH2ol1SfAY-8nzQ 提取码:9zgl

3、XmlUtil

import java.io.File; import java.util.List; import org.dom4j.Element; import org.dom4j.Document; import java.util.ArrayList; import org.dom4j.io.SAXReader; import org.dom4j.DocumentException; /** * todo * * @author hubozhi * @date 2020/9/2 15:01 **/ public class XMLUtil { public static List<String> parseXmlToList(String filePath,String attr){ try{ //第一步:得到一个SAXReader对象(来自dom4j包) SAXReader reader = new SAXReader(); //读取XML文件,并且返回一个Document对象 Document doc = reader.read(new File(filePath)); //得到XML的根节点 Element root = doc.getRootElement(); System.out.println(root.getName()); //遍历子元素 List<Element> elementList = root.elements(); List<String> resList = new ArrayList<>(); elementList.forEach(element->{ //获取属性的值 resList.add(element.attributeValue(attr)); //得到去掉空格的值 System.out.println(element.getTextTrim()); }); return resList; }catch (Exception e){ e.printStackTrace(); return null; } } /** * @desc 获取指定节点的指定属性 * @author hubz * @date 2020/9/3 8:45 * @param filePath XML文件目录 * @param tab 节点名称 * @param attr 属性名 * @return 属性值的列表 **/ public static List<String> parseXmlToList2(String filePath,String tab,String attr){ try{ Document doc = getDoc(filePath); //按照元素的标签名来得到对应节点的集合 List<Element> elementList = selectNodes(doc,tab); List<String> resList = new ArrayList<>(); elementList.forEach(element->{ System.out.println(element.getName()); System.out.println(element.attributeValue(attr)); System.out.println("title:"+element.elementText("title")); System.out.println("why:"+element.elementText("why")); System.out.println("================================="); }); return resList; }catch (Exception e){ e.printStackTrace(); return null; } } private static Document getDoc(String filePath) { Document doc=null; try{ //第一步:得到一个SAXReader对象(来自dom4j包) SAXReader reader = new SAXReader(); //读取XML文件,并且返回一个Document对象 doc = reader.read(new File(filePath)); }catch (DocumentException e){ e.printStackTrace(); } return doc; } private static List<Element> selectNodes(Document doc,String tab){ //得到XML的根节点 Element root = doc.getRootElement(); return root.elements(tab); } public static void main(String[] args) { parseXmlToList2("...\\test.xml","cousic","tableName").forEach(System.out::println); } }

 

最新回复(0)