本站首页    管理页面    写新日志    退出

«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

  如果你忍了,欺负你的人将来可能就进监狱了。如果你反击,欺负你的人将来可能就获选十大杰出青年了。

        QQ: 3159671

http://greenboy.javaeye.com/

http://blog.sina.com.cn/u/1278341164 小鸟吹烟


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:小鸟吹烟
日志总数:157
评论数量:424
留言数量:-1
访问次数:1250156
建立时间:2006年10月23日




[XML]Dom4j递归解析XML实现JS的getElementsByName类似方法
文章收藏,  网上资源

tone 发表于 2007/2/28 11:58:41

http://www.show6.net/browse-37915.html 用惯了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文件如下:   500)this.width=500'>xml version="1.0" encoding="UTF-8"?>500)this.width=500'><callcenter_response>500)this.width=500'><action_id>PRODUCT_INFOaction_id>500)this.width=500'><error>0error>500)this.width=500'><err_code/>500)this.width=500'><err_desc/>500)this.width=500'><count>1count>500)this.width=500'><total_page>1total_page>500)this.width=500'><page_no>1page_no>500)this.width=500'><record>500)this.width=500'><service_code>1111service_code>500)this.width=500'><service_name>2222service_name>500)this.width=500'>record>500)this.width=500'><record>500)this.width=500'><service_code>1111service_code>500)this.width=500'><service_name>2222service_name>500)this.width=500'>record>500)this.width=500'>callcenter_response>   只是举个简单的例子说明我编的程序的适用性,下面是代码了:   500)this.width=500'>package com;500)this.width=500'>500)this.width=500'>import java.lang.reflect.*;500)this.width=500'>import java.util.ArrayList;500)this.width=500'>import java.util.Iterator;500)this.width=500'>500)this.width=500'>500)this.width=500'>import org.dom4j.Document;500)this.width=500'>import org.dom4j.DocumentException;500)this.width=500'>500)this.width=500'>import org.dom4j.Element;500)this.width=500'>500)this.width=500'>import org.dom4j.io.SAXReader;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ReadConfig ...{500)this.width=500'>500)this.width=500'>public static void main(String[] args) ...{500)this.width=500'>500)this.width=500'>        SAXReader xmlReader = new SAXReader();500)this.width=500'>500)this.width=500'>500)this.width=500'>        try ...{500)this.width=500'>            Document doc = xmlReader.read("test.xml");500)this.width=500'>            500)this.width=500'>            Element root = doc.getRootElement();500)this.width=500'>            500)this.width=500'>            ReadConfig rc =new ReadConfig ();500)this.width=500'>            ArrayList ssa=new ArrayList();500)this.width=500'>            ArrayList list=rc.getElementsByName (ssa, root, "record");500)this.width=500'>500)this.width=500'>             System.out.println( list.size());500)this.width=500'>500)this.width=500'>        } catch (DocumentException e) ...{500)this.width=500'>            500)this.width=500'>            e.printStackTrace();500)this.width=500'>        }500)this.width=500'>    }500)this.width=500'>    public ArrayList getElementsByName(ArrayList elementName,Element top,String name)500)this.width=500'>500)this.width=500'>    ...{500)this.width=500'>        500)this.width=500'>        if(top.getName().equalsIgnoreCase(name))500)this.width=500'>500)this.width=500'>        ...{500)this.width=500'>          elementName.add(top);500)this.width=500'>        }500)this.width=500'>        Iterator iter = top.elementIterator();500)this.width=500'>        500)this.width=500'>500)this.width=500'>        if (!iter.hasNext())...{return elementName;}500)this.width=500'>        else500)this.width=500'>500)this.width=500'>        ...{500)this.width=500'>             while(iter.hasNext()) 500)this.width=500'>500)this.width=500'>              ...{ 500)this.width=500'>                  Element sub = (Element)iter.next();500)this.width=500'>                  500)this.width=500'>                  getElementsByName(elementName,sub,name); 500)this.width=500'>             500)this.width=500'>              }500)this.width=500'>            500)this.width=500'>        }500)this.width=500'>        return elementName;500)this.width=500'>        500)this.width=500'>        500)this.width=500'>    }500)this.width=500'>500)this.width=500'>}   这里不多解释,这个程序调试过,可以直接用,有兴趣我们讨论一下的就跟贴吧


阅读全文(3398) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144752900 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号