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);
}
}