隨筆-72  評論-63  文章-0  trackbacks-0
          ???Element類的getContent()方法返回一個List對象,它包括了一個元素的所有內(nèi)容:注釋、屬性、處理指令、文本和子元素。利用它我們可以遍歷XML文檔。下面的程序來自《java語言與xml教程》
          import?org.jdom.*;
          import?org.jdom.input.SAXBuilder;
          import?java.io.IOException;
          import?java.util.*;

          public?class?TreePrinter{
          ???public?static?void?process(Element?element){
          ??????inspect(element);
          ??????List?content=element.getContent();//取元素的所有內(nèi)容
          ??????Iterator?iterator=content.iterator();
          ??????while(iterator.hasNext()){
          ?????????Object?o=iterator.next();
          ?????????if(o?instanceof?Element){//如果是子元素
          ?????????????Element?child=(Element)o;
          ?????????????process(child);//遞歸調(diào)用
          ?????????}else?if(o?instanceof?Comment){//如果是說明
          ?????????????Comment?c=(Comment)o;
          ?????????????//System.out.println(c.getText());
          ????????????//?System.out.println();
          ??????}
          ???}

          ???public?static?void?inspect(Element?element){
          ????????if(!element.isRootElement()){
          ???????????System.out.println();
          ????????}

          ????????String?qualifiedName=element.getQualifiedName();
          ????????System.out.println(qualifiedName+":"+element.getText());
          ????????Namespace?namespace=element.getNamespace();
          ????????if(namespace!=Namespace.NO_NAMESPACE){
          ?????????????String?localName=element.getName();
          ?????????????String?uri=element.getNamespaceURI();
          ?????????????String?prefix=element.getNamespacePrefix();
          ?????????????System.out.println("??Local?name:?"+localName);
          ?????????????System.out.println("??Namespace?URI:?"+uri);
          ?????????????if(!"".equals(prefix)){
          ???????????????????System.out.println("??Namespace?prefix:?"+prefix);
          ?????????????}
          ?????????}

          ???????List?attributes=element.getAttributes();
          ???????if(!attributes.isEmpty()){
          ????????????Iterator?iterator=attributes.iterator();
          ????????????while(iterator.hasNext()){
          ???????????????Attribute?attribute=(Attribute)iterator.next();
          ???????????????String?name=attribute.getName();
          ???????????????String?value=attribute.getValue();
          ???????????????Namespace?attributeNamespace=attribute.getNamespace();
          ???????????????if(attributeNamespace==Namespace.NO_NAMESPACE){
          ?????????????????System.out.println("??"+name+?"=\""+value+?"\"");
          ???????????????}else{
          ?????????????????String?prefix=attributeNamespace.getPrefix();
          ?????????????????System.out.println("??"+prefix+":"+name+"=\""+value+"\"");
          ???????????????}
          ?????????????}
          ?????????}

          ?????????List?namespaces=element.getAdditionalNamespaces();
          ?????????if(!namespaces.isEmpty()){
          ????????????Iterator?iterator=namespaces.iterator();
          ????????????while(iterator.hasNext()){
          ????????????????Namespace?additional=(Namespace)iterator.next();
          ????????????????String?uri=additional.getURI();
          ????????????????String?prefix=additional.getPrefix();
          ????????????????System.out.println("??xmlns:"+prefix+"=\""+uri+"\"");
          ?????????????}
          ??????????}
          ????}

          ???????public?static?void?main(String[]?args){
          ?????????if(args.length<=0){
          ????????????System.out.println("Usage:?java?TreePrinter?URL");
          ????????????return;
          ??????????}
          ?????????String?url=args[0];
          ?????????try{
          ??????????????SAXBuilder?parser=new?SAXBuilder();
          ??????????????Document?document=parser.build(url);
          ??????????????process(document.getRootElement());
          ????????}catch(JDOMException?e){
          ??????????????System.out.println(url+"?is?not?well-formed.");
          ????????}catch(IOException?e){
          ??????????????System.out.println("Due?to?an?IOException,the?parser?could?not?encode?"+url);
          ????????}
          ??????}
          ?}

          ???運行結(jié)果:

          C:\java>java???TreePrinter?sample.xml
          HD:
          ??xmlns:dd="http://www.zzjava.hnzz.net"
          ??xmlns:ss="http://www.hnzz.net"
          disk:
          ??name="C"
          capacity:8G
          directories:200
          files:1580
          disk:
          ??name="D"
          capacity:10G
          directories:500
          files:3000

          用的xml文件是:
          <?xml?version="1.0"?encoding="UTF-8"?>
          <HD?xmlns:dd="http://www.zzjava.hnzz.net"??xmlns:ss="http://www.hnzz.net"?>
          ????????<disk?name="C">
          ????????????????<capacity>8G</capacity>
          ????????????????<directories>200</directories>
          ????????????????<files>1580</files>
          ????????</disk>

          ????????<disk?name="D">
          ????????????????<capacity>10G?<!--good-->
          ????????????????</capacity>
          ????????????????<directories>500</directories>
          ????????????????<files>3000</files>
          ????????</disk>
          </HD>

          http://blog.iyi.cn/start/2005/01/javaxml.html
          http://toney.cnblogs.com/archive/2004/11/20/66178.aspx
          posted on 2006-06-20 15:18 船長 閱讀(1503) 評論(1)  編輯  收藏 所屬分類: J2EE

          評論:
          # re: 用JDOM遍歷xml文檔 2009-05-06 16:54 | shang
          瘋狂的船長,若是我想讀出xml用表格的方式顯示出來,比如顯示出一份財務(wù)報表,應(yīng)該怎么寫?  回復(fù)  更多評論
            
          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          相冊

          主站蜘蛛池模板: 徐闻县| 塘沽区| 阿拉善盟| 彰化县| 平塘县| 安国市| 吉安县| 泸水县| 深水埗区| 郸城县| 密山市| 安仁县| 武宣县| 万年县| 洞口县| 于都县| 迭部县| 吉安市| 绍兴市| 阿合奇县| 逊克县| 龙里县| 江西省| 天祝| 文成县| 永靖县| 栖霞市| 吴堡县| 尚志市| 武汉市| 湾仔区| 泽州县| 桂林市| 兴海县| 南涧| 襄汾县| 静乐县| 新绛县| 斗六市| 榕江县| 梓潼县|