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;


/** *//**
* è¯Õd–有命å空间的XMLåQˆæ”¯æŒèŠ‚ç‚¹è¯»å–ä¸å®Œæ•´åQ?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æ–‡äšg:
<?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="æ•°æ®ä»£ç " 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>è¯Õd–XMLå•个节点åQˆinputs下的columns节点åQ?
Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
DefaultElement columnsitem = df.getSelectObject("columns");è¯Õd–XML inputs节点下所有的input节点åQ?/p>
Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
List<DefaultElement> inputNodes = df.getSelectNodes("input");

]]>