可以運行,雖然質量不好,但本來是用來分析數據庫配置文件的,哈哈。
導入Java . io . file;
導入Java . util . ArrayList;
導入Java . util . list;
導入org . dom4j . document;
導入org . dom4j . document exception;
導入org . dom4j . element;
導入org . dom4j . node;
導入org . dom4j . io . sax reader;
公共類XmlReaderSAX {
私有靜態字符串file path = " d:\ \ test 1 . XML ";
/**
* @param文件名(文件路徑)
* @返回文檔文檔
*/
私有靜態文檔readXmlFlie(字符串文件名){
SAXReader reader = new SAXReader();
文檔document = null
嘗試{
document = reader.read(新文件(文件名));
} catch (DocumentException e) {
e . printstacktrace();
}
返回文檔;
}
/**
* @param xmlDocument
* @返回字符串文件內容
*/
公共靜態字符串Document tostr(Document XML Document){
string XML str = XML document . asxml();
返回xmlStr
}
/**
* @return Document文檔(database.xml)
*/
公共靜態文檔getDatabaseXML(){
返回readXmlFlie(file path);
}
//獲取根節點
公共靜態元素getRootElement(Document doc){
返回doc . getrootelement();
}
//xml的指定節點的子節點遍歷,包括自身。
公共靜態列表getall elements(Element Element){
ArrayList & lt元素& gtlist = new ArrayList & lt元素& gt();
list.add(元素);
返回getSubElements(element,list);
}
//xml的指定節點的子節點遍歷不包含自身。
公共靜態列表getSubElements(Element元素,ArrayList & lt元素& gt列表){
for(int i=0,size = element . node count();我& lt尺寸;i++){
node node = element . node(I);
if(元素的節點實例){
Element子元素= (Element)節點;
list.add(子元素);
getSubElements(子元素,列表);
}
}
退貨單;
}
//獲取指定名稱的節點列表。
公共靜態列表getNamedElements(字符串名稱){
ArrayList & lt元素& gtlist = new ArrayList & lt元素& gt();
list all list = get all elements(getDatabaseXML()。getRootElement());
for(int I = 0;我& ltall list . size();i++){
Element ele =(Element)all list . get(I);
If (ele.getname()。等於忽略的case(name)| | ele . get qualified name()。等於忽略的大小寫(名稱)){//忽略大小寫。
list . add(ele);
}
}
退貨單;
}
公共靜態void main(String[] args) {
list list = getNamedElements(" ns 1:string ");
for(int I = 0;我& ltlist . size();i++){
Element ele =(Element)list . get(I);
system . out . println(ele . gettext());
}
}
}