如下xml文件:
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<SetObject>
<yourKey name="[loadFile" value="com.zsj.test.daos.LoadFileStatHandler" />
<yourKey name="[udptotcp" value="com.zsj.test.daos.UdpToUpdStatHandler" />
<yourKey name="[udpconnect" value="com.zsj.test.daos.UdpconnectStatHandler" />
</SetObject></span>
1、建立一个bean类:HandlerInfo,属性有name、value存放xml文件中的name和value
2、解析xml文件,存放在List<HandlerInfo>中
<span style="font-size:18px;">public class DOMxml
{
private final String path="./config.xml";//xml存放位置,用相对path不用绝对路径
/**
* 读取cofig文件
* @return
*/
public Document getDocu()
{
Document document=null;
SAXReader reader=new SAXReader();
try {
document=reader.read(new File(path));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
/**
* 获取文件中的name和value,封装进list中
* @return
*/
public List<HandlerInfo>get()
{
List<HandlerInfo>list=new ArrayList<>();
Document document=getDocu();
Element root=document.getRootElement();//得到xml文件中的根节点,最外层的<span style="font-family: Arial, Helvetica, sans-serif;">SetObject</span>
@SuppressWarnings("rawtypes")
Iterator it=root.elementIterator();//得到根节点下的所有子节点
while(it.hasNext())
{
Element child=(Element) it.next();//得到子节点
String name=child.attributeValue("name");//得到该子节点名称为:name的属性值
String value=child.attributeValue("value");//得到该子节点名称为:value的属性值</span>
HandlerInfo handlerInfo=new HandlerInfo();
handlerInfo.setKey(name);
handlerInfo.setHandlerClass(value);
list.add(handlerInfo);
}
return list;
}
}
</span>
用dom4j解析xml思路十分简单,可以直接获取某个几点的子节点,也可以根据名称来获取制定子节点,同样,如果要制定属性值,利用arrtributeValue即可