<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-17  評(píng)論-64  文章-79  trackbacks-1
    JDOM是Breet Mclaughlin和Jason Hunter兩大Java高手的創(chuàng)作成果,2000年初,JDOM作為一個(gè)開(kāi)放源代碼項(xiàng)目正式開(kāi)始研發(fā)。JDOM是一種解析XML的Java工具包。

    JDOM的二進(jìn)制版本下載:http://www.jdom.org/downloads/index.html

    把解壓后的jdom.jar文件加到項(xiàng)目的類(lèi)路徑中,另外便于調(diào)試,還要下載它的源代碼。

    一、解析XML
    要解析的XML文件:
    <?xml version="1.0" encoding="gb2312"?>
    <books>
       
    <book email="zhoujunhui">
         
    <name>rjzjh</name>
         
    <price>60.0</price>
      
    </book>
    </books>


    解析XML的java文件:
     1 package com;
     2 
     3 import java.io.IOException;
     4 import java.util.*;
     5 import org.jdom.*;
     6 import org.jdom.input.SAXBuilder; 
     7 
     8 public class Test {
     9 
    10     /**
    11      * @param args
    12      */
    13     public static void main(String[] args) {
    14         SAXBuilder sb=new SAXBuilder(false);
    15         Document doc = null;
    16         try {
    17             doc = sb.build("sample.xml");
    18         } catch (JDOMException e) {
    19             e.printStackTrace();
    20         } catch (IOException e) {
    21             e.printStackTrace();
    22         } 
    23         Element root=doc.getRootElement(); //獲取根元素
    24         List list=root.getChildren("book");//取名字為book的所有元素
    25         for(int i=0;i<list.size();i++){
    26             Element element=(Element)list.get(i);
    27             String email=element.getAttributeValue("email");
    28             String name=element.getChildText("name");
    29             String price=element.getChildText("price");
    30             System.out.println("name:"+name);
    31             System.out.println("price:"+price);
    32             System.out.println("email:"+email);
    33         }
    34     }
    35 }
    36 
    37 

    解釋代碼
    引用的類(lèi):
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    //下面是引用到JDOM中的類(lèi)
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.XMLOutputter;
    (1)使用JDOM首先要指定使用什么解析器。如:
            SAXBuilder builder=new SAXBuilder(false); 這表示使用的是默認(rèn)的解析器
    (2)得到Document,我們以后要進(jìn)行的所有操作都是對(duì)這個(gè)Document操作的:
            Document doc=builder.build(xmlpath);
    (3)得到根元素:
            Element books=doc.getRootElement();
    在JDOM中所有的節(jié)點(diǎn)(DOM中的概念)都是一個(gè)org.jdom.Element類(lèi),當(dāng)然他的子節(jié)點(diǎn)也是一個(gè)org.jdom.Element類(lèi)。
    (4)得到元素(節(jié)點(diǎn))的集合:
          List booklist=books.getChildren("book");
    這表示得到“books”元素的所在名稱為“book”的元素,并把這些元素都放到一個(gè)List集合中
    (5)輪循List集合
         for (Iterator iter = booklist.iterator(); iter.hasNext();) {
           Element book = (Element) iter.next();
        }
    還有一種輪循方法是:
        for(int i=0;I<booklist.size();I++){
          Element book=(Element)booklist.get(i);
        }
    (6)取得元素的屬性:
        String email=book.getAttributeValue("email");
       取得元素book的屬性名為“email”的屬性值。
    (7)取得元素的子元素(為最低層元素)的值:
        String name=book.getChildTextTrim("name");
        注意的是,必須確定book元素的名為“name”的子元素只有一個(gè)。
    (8)改變?cè)兀樽畹蛯釉兀┑闹担?br />     book.getChild("name").setText("alterrjzjh");
        這只是對(duì)Document的修改,并沒(méi)有在實(shí)際的XML文檔中進(jìn)行修改
    (9)保存Document的修改到XML文件中:
       XMLOutputter outputter=new XMLOutputter();
        outputter.output(doc,new FileOutputStream(xmlpath));

    我們先要有一個(gè)XMLOutputter類(lèi),再把已經(jīng)修改了的Document保存進(jìn)XML文檔中。
    到此。用JDOM解析和處理XML文檔講解完了,麻雀雖小,五臟俱全?,F(xiàn)在已對(duì)JDOM有個(gè)整體上的概念了吧。

    二、生成XML:
    java文件:
     1 package com;
     2 
     3 import java.io.FileWriter;
     4 import java.io.IOException;
     5 import java.util.*;
     6 import org.jdom.*;
     7 import org.jdom.input.SAXBuilder; 
     8 import org.jdom.output.XMLOutputter;
     9 
    10 public class Test {
    11 
    12     /**
    13      * @param args
    14      */
    15     public static void main(String[] args) {
    16         //第一步,創(chuàng)建根元素 
    17 
    18         Element carElement = new Element("car"); 
    19         Document myDocument = new Document(carElement); 
    20 
    21         //因?yàn)橐粋€(gè) XML 文檔必須一直有一個(gè)唯一的根元素,所以 Document 將 Element 放在它的構(gòu)造器中。 
    22 
    23         //第二步,添加一個(gè) Attribute 
    24 
    25         carElement.setAttribute(new Attribute("vin""123fhg5869705iop90")); 
    26 
    27         //第三步,添加其它元素 
    28 
    29         carElement.addContent(new Element("make").addContent("Toyota")); 
    30 
    31         carElement.addContent(new Element("model").addContent("Celica")); 
    32         carElement.addContent(new Element("year").addContent("1997")); 
    33         carElement.addContent(new Element("color").addContent("green")); 
    34         carElement.addContent(new Element("license").addContent("1ABC234").setAttribute("state""CA")); 
    35 
    36         //第四步,添加一條注釋 
    37 
    38         carElement.addContent(new Comment("Description of a car")); 
    39 
    40         //第五步,讀一個(gè)子元素 
    41 
    42         Element yearElement = carElement.getChild("year"); 
    43 
    44         //第六步,刪除子元素 
    45 
    46         boolean removed = carElement.removeChild("year"); 
    47 
    48         //第七步,存盤(pán) 
    49         XMLOutputter outputter = new XMLOutputter();//用于輸出jdom 文檔
    50         FileWriter writer;
    51         try {
    52             writer = new FileWriter("myFile.xml");
    53             outputter.output(myDocument, writer); 
    54             writer.close();
    55         } catch (IOException e) {
    56             // TODO 自動(dòng)生成 catch 塊
    57             e.printStackTrace();
    58         } 
    59         
    60 
    61     }
    62 }
    63 
    64 

    生成的XML:
    <?xml version="1.0" encoding="UTF-8"?>
    <car vin="123fhg5869705iop90">
    <make>Toyota</make>
    <model>Celica</model>
    <color>green</color>
    <license state="CA">1ABC234</license>
    <!--Description of a car-->
    </car>
    posted on 2007-10-19 20:34 飛鳥(niǎo) 閱讀(652) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JAVA
    主站蜘蛛池模板: 在线观看视频免费完整版| 一级午夜a毛片免费视频| 亚洲春色在线观看| 老汉色老汉首页a亚洲| 亚洲AV综合色区无码一区| 国产亚洲精品国产| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲国产精品无码久久| 亚洲一级视频在线观看| 亚洲一区在线免费观看| 亚洲日本乱码卡2卡3卡新区| 亚洲性无码一区二区三区| 亚洲风情亚Aⅴ在线发布| 亚洲av成本人无码网站| 免费人成大片在线观看播放电影| 免费国产a理论片| 一区二区三区在线观看免费| 中文字幕在线免费视频| 久久精品无码精品免费专区| 中文字幕在线免费| 中文字幕无码播放免费| 性感美女视频在线观看免费精品 | 全黄大全大色全免费大片| 91成人免费观看在线观看| 免费在线看黄网站| 37pao成人国产永久免费视频| 一区免费在线观看| 久久免费99精品国产自在现线| 最近2019中文免费字幕在线观看| 一级毛片免费观看| 在线视频观看免费视频18| 国产免费午夜a无码v视频| 亚洲自偷自偷偷色无码中文| 亚洲国产成人精品不卡青青草原| 亚洲伦理中文字幕| 特级毛片免费观看视频| 久久精品国产免费| 特级做A爰片毛片免费69| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 国产V亚洲V天堂无码久久久| 亚洲高清资源在线观看|