import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader;


/** *//**
* 璇誨彇鏈夊懡鍚嶇┖闂寸殑XML錛堟敮鎸佽妭鐐硅鍙栦笉瀹屾暣錛?br />
* @author Ai Bo
* @version 1.3.1 Date 2011-12-14
*/

public class Dom4jFactory
{
private SAXReader reader = new SAXReader();
private Document document;
private static Element root;
private static Map<String, String> xmlMap = new HashMap<String, String>();


public Dom4jFactory(String path)
{
super();

try
{
document = reader.read(path);
root = document.getRootElement();
String defaultNamespace = root.getNamespaceURI();
xmlMap.put("default", defaultNamespace);

} catch (DocumentException e)
{
e.printStackTrace();
}
}


public static List<?> getSelectNodes(String arg0)
{
XPath selector = root.createXPath("//default:" + arg0);
selector.setNamespaceURIs(xmlMap);
return selector.selectNodes(root);
}
@SuppressWarnings("unchecked")

public <T> T getSelectObject(String arg0)
{
List<?> selectNodes = getSelectNodes(arg0);

if(selectNodes.size()==1)
{
return (T) selectNodes.get(0);

}else
{
return null;
}
}
}
XML鏂囦歡:
<?xml version="1.0" encoding="UTF-8"?>
<inputs xmlns="http://input.abio.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://input.abio.com.cn http://www.abio.com.cn/sproinput.xsd">
<columns>2</columns>
<input id="id" datatype="String" minlen="1" maxlen="32" casetype="U" width="40" name_zh="鏁版嵁浠g爜" inputtype="text" editable="2" gridwidth="3"></input>
<input id="organNo" datatype="integer" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="鏈烘瀯緙栧彿" inputtype="text" editable="2"></input>
<input id="organName" datatype="String" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="鏈烘瀯鍚嶇О" inputtype="text" editable="2"></input>
<input id="pOrganNo" datatype="String" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="鐖舵満鏋勭紪鍙? inputtype="text" editable="2"></input>
<input id="effTime" datatype="Date" validator="Date" nullable="false" format="yyyy-MM-dd" minlen="8" maxlen="8" casetype="U" width="40" name_zh="鏈夋晥鏃ユ湡" inputtype="date" editable="2"></input>
<input id="createUser" datatype="String" minlen="1" maxlen="20" casetype="U" width="40" name_zh="鍒涘緩浜? inputtype="text" editable="2"></input>
<input id="createTime" datatype="Date" minlen="10" maxlen="20" casetype="U" width="40" name_zh="鍒涘緩鏃ユ湡" editable="2" inputtype="text"></input>
<input id="updateUser" datatype="String" minlen="1" maxlen="20" casetype="U" width="40" name_zh="鏇存柊浜? inputtype="text" editable="2"></input>
<input id="updateTime" datatype="Date" minlen="10" maxlen="20" casetype="U" width="40" name_zh="鏇存柊鏃ユ湡" editable="2" inputtype="text"></input>
</inputs>璇誨彇XML鍗曚釜鑺傜偣錛坕nputs涓嬬殑columns鑺傜偣錛?
Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
DefaultElement columnsitem = df.getSelectObject("columns");璇誨彇XML inputs鑺傜偣涓嬫墍鏈夌殑input鑺傜偣錛?/p>
Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
List<DefaultElement> inputNodes = df.getSelectNodes("input");

]]>