1.Dom4j简介
Dom4j是目前最流行、最好用的XML解析工具,解析XML的速度最快;
2.本博客分别以解析双标签和单标签为例进行演示
2.1 双标签
2.1.1 data.xml配置文件
2.1.2 操作xml的类
package com.common;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @Description:该类的功能描述
* @ClassName:FromXml.java
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午2:22:15
*/
public class FromXml {
/**
* @Description:遍历xml的全部数据
* @MethodName:getXmlContent
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午15:51:11
*/
public static void getXmlContent()throws Exception{
String filePath=System.getProperty("user.dir")+"/data.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element node = document.getRootElement();
List<Element> elements = node.elements();
for(Element el:elements){
System.out.println("属性名:"+el.attributeValue("name"));
System.out.println("参数值:"+el.element("value").getText());
System.out.println("描 述:"+el.element("comment").getText());
}
}
/**
* @Description:获取xml的指定属性值
* @ClassName:getParaContent
* @param:parameterName
* 传入的指定参数名
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午15:51:11
*/
public static String getParaContent(String parameterName) throws DocumentException{
String parameterValue = null;
String filePath=System.getProperty("user.dir")+"/data.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element node = document.getRootElement();
List<Element> elements = node.elements();
for(Element el:elements){
if(el.attributeValue("name").equals(parameterName)){
parameterValue = el.element("value").getText();
}
}
return parameterValue;
}
}
2.1.3使用testNG进行测试
package com.testngdemo;
import org.testng.annotations.Test;
import com.common.FromXml;
public class TestFromXml {
@Test
public void getFromXml() throws Exception {
FromXml.getXmlContent();
}
@Test
public void getCustomFromXml() throws Exception {
System.out.println("参数值为:"+FromXml.getParaContent("username"));
}
}
2.1.4 结果如下:
2.2 单标签
2.2.1 singlelabe.xml配置文件
2.2.2 操作xml的具体类
package com.common;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @Description:该类的功能描述
* @ClassName:FromSingleXml.java
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午3:26:24
*/
public class FromSingleXml {
/**
* @Description:遍历xml的全部数据,单标签
* @ClassName:getSingleXmlData
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午15:51:11
*/
public static void getSingleXmlContent()throws Exception{
String filePath=System.getProperty("user.dir")+"/singlelabe.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element node = document.getRootElement();
List<Element> elements = node.elements();
for(Element el:elements){
System.out.println("属性名:"+el.attributeValue("name")+"-->"+el.attributeValue("value")+"-->"+el.attributeValue("comment"));
}
}
/**
* @Description:获取xml的指定属性值,单标签
* @ClassName:getSingleParaContent
* @param parameterName
* 传入的指定参数名
* @version:v1.0.0
* @author:bingkele
* @date:2020年5月31日下午15:51:11
*/
public static String getSingleParaContent(String parameterName) throws DocumentException{
String parameterContent = null;
String filePath=System.getProperty("user.dir")+"/singlelabe.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element node = document.getRootElement();
List<Element> elements = node.elements();
for(Element el:elements){
if(el.attributeValue("name").equals(parameterName)){
parameterContent = el.attributeValue("value");
}
}
return parameterContent;
}
}
2.2.3 使用testNG进行测试
package com.testngdemo;
import org.testng.annotations.Test;
import com.common.FromSingleXml;
public class TestFromSingleXml {
@Test
public void getXmlData() throws Exception {
FromSingleXml.getSingleXmlContent();
}
@Test
public void getXmlCustomerData() throws Exception {
System.out.println(FromSingleXml.getSingleParaContent("username"));
}
}
2.2.4 结果如下图:
3.附依赖包如下:
4.dom4j常用方法(仅供参考)