如下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即可