用DOM4j解析xml文件

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章