隨筆-72  評論-63  文章-0  trackbacks-0
          ???Element類的getContent()方法返回一個List對象,它包括了一個元素的所有內容:注釋、屬性、處理指令、文本和子元素。利用它我們可以遍歷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();//取元素的所有內容
          ??????Iterator?iterator=content.iterator();
          ??????while(iterator.hasNext()){
          ?????????Object?o=iterator.next();
          ?????????if(o?instanceof?Element){//如果是子元素
          ?????????????Element?child=(Element)o;
          ?????????????process(child);//遞歸調用
          ?????????}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);
          ????????}
          ??????}
          ?}

          ???運行結果:

          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 船長 閱讀(1505) 評論(1)  編輯  收藏 所屬分類: J2EE

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

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          相冊

          主站蜘蛛池模板: 永城市| 望江县| 武山县| 襄城县| 长兴县| 丽江市| 勃利县| 潜江市| 尉犁县| 敖汉旗| 桂阳县| 九寨沟县| 任丘市| 炎陵县| 财经| 屏东市| 靖远县| 墨竹工卡县| 湘潭市| 金溪县| 肇东市| 类乌齐县| 普定县| 逊克县| 修文县| 东乌珠穆沁旗| 乌兰浩特市| 七台河市| 镇远县| 新泰市| 班玛县| 永丰县| 荔浦县| 新闻| 兴山县| 锦屏县| 临西县| 浦东新区| 吉安县| 太湖县| 肇源县|