您的位置:首页 > Web前端 > JavaScript

Dom4j递归解析XML实现JS的getElementsByName类似方法

2006-12-14 17:54 751 查看
用惯了JS解析XML要在Java里面解析实在觉得麻烦,又有种多解析器,W3C,JDOM,DOM4J, SAX眼花缭乱,在网上搜到推荐用Dom4j于是就用了它。

但是发现Dom4J解析只能一层一层的按节点读甚是不爽,远没有JS的getElementsByName方法,一取一个数组这么简便,于是就自己写了一个。

先学习了一下Dom4j的使用方法,可以看这个网址,当然还可以去官网,不过我郁闷了半天没找到文档,用Eclipse的代码提示功能找了一下

http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/dom4j.html

例子的XML文件如下:


<?xml version="1.0" encoding="UTF-8"?>


<callcenter_response>


<action_id>PRODUCT_INFO</action_id>


<error>0</error>


<err_code/>


<err_desc/>


<count>1</count>


<total_page>1</total_page>


<page_no>1</page_no>


<record>


<service_code>1111</service_code>


<service_name>2222</service_name>


</record>


<record>


<service_code>1111</service_code>


<service_name>2222</service_name>


</record>


</callcenter_response>

只是举个简单的例子说明我编的程序的适用性,下面是代码了:


package com;




import java.lang.reflect.*;


import java.util.ArrayList;


import java.util.Iterator;






import org.dom4j.Document;


import org.dom4j.DocumentException;




import org.dom4j.Element;




import org.dom4j.io.SAXReader;






public class ReadConfig ...{




public static void main(String[] args) ...{




SAXReader xmlReader = new SAXReader();






try ...{


Document doc = xmlReader.read("test.xml");




Element root = doc.getRootElement();




ReadConfig rc =new ReadConfig ();


ArrayList ssa=new ArrayList();


ArrayList list=rc.getElementsByName (ssa, root, "record");




System.out.println( list.size());




} catch (DocumentException e) ...{




e.printStackTrace();


}


}


public ArrayList getElementsByName(ArrayList elementName,Element top,String name)




...{




if(top.getName().equalsIgnoreCase(name))




...{


elementName.add(top);


}


Iterator iter = top.elementIterator();






if (!iter.hasNext())...{return elementName;}


else




...{


while(iter.hasNext())




...{


Element sub = (Element)iter.next();




getElementsByName(elementName,sub,name);




}




}


return elementName;






}




}

这里不多解释,这个程序调试过,可以直接用,有兴趣我们讨论一下的就跟贴吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐