Dom4j解析xml数据格式

dom4j解析xml步骤及常用方法

1、需要导入jar包/
2、创建对应的document对象
SAXReader reader = new SAXReader(); //获取解析器对象
Document document = reader.read(url); //通过解析器获取文件对象,参数url为xml的文件路径的字符串
常用方法如下:
方法 返回值 说明
getRootElement() Element对象 通过文件对象,获取根标签对象
element(String name) Element对象 获取元素名称为name的子元素对象
attributeValue(String name) String 根据指定的属性名称获取其对应的值
elementText(String name) String 获取名称为name的子元素中的文本
elements() List 获取所有的子元素的集合
elements(String name) List 获取元素名称为name的所有子元素集合

代码实践

//xml代码
Dom4j解析xml数据格式

//这个类用于解析xml配置文件数据
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ContextServer {
//声明xml中4个变量
public static int port;//服务器端口号
public static int maxSize;//线程最大数
public static String protocol;//协议名和版本号
public static String webRoot;//服务器资源存放根目录
public static String notfoundpage;//声明404页面
public static Map<String,String> typeMap = new HashMap<String,String>();
static{
//在静态代码块中完成初始化变量
voit();
}
private static void voit() {
try {
//获取解析器对象
SAXReader reader = new SAXReader();
//读取Config目录下的xml文件
Document doc = reader.read(“Config/ServerContext.xml”);
//获取xml文件根节点server
Element server = doc.getRootElement();
//获取server下的字节点service;
Element service = server.element(“service”);
//获取service下的connect字节点
Element connect = service.element(“connect”);
//获取connect身上的port、maxSize、ptotocol的数据
port = Integer.valueOf(connect.attributeValue(“port”));
maxSize = Integer.valueOf(connect.attributeValue(“maxSize”));
protocol = connect.attributeValue(“protocol”);
//获取webRoot身上的数据
webRoot = service.elementText(“webRoot”);
//获取404身上的数据
notfoundpage = service.elementText(“not-found-page”);
//给typeMap赋值
List list =server.element(“contentTypes”).elements();
//遍历list
for(Element element:list){
String key =element.attributeValue(“ext”);
String value =element.attributeValue(“type”);
//把key和value存入typeMap
//{html,text/html jpg,image/jpeg }
typeMap.put(key,value);
}
} catch (DocumentException e) {
e.printStackTrace();
}

}

}