本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
          1) JDOM的組成.任何一個框架都有自己的組成結構,JDOM雖說不上是一個框架,因為她沒有提供給我們任何的擴展框架.如果說其是一個工具,那么她是一個結構非常簡單的XML操作工具,其包插如下包:

          org.JDOM
          org.JDOM.input
          org.JDOM.output
          org.JDOM.adapters
          org.JDOM.transform
          我們可以從字面上去理解每個包的作用. JDOM包含以下類型
          Attribute
          CDATA
          Coment
          DocType
          Document
          Element
          EntityRef
          Namespace
          ProscessingInstruction
          Text
          在開發jdom應用程序中我們所用的所有類型....就這幾個類型很簡單就可理解.下面介始一個每個開發包的作用:
          * org.JDOM.transform
          在涉及xslt格式轉換時應使用下面的2個類
          JDOMSource
          JDOMResult

          * org.JDOM.input
          輸入類,一般用于文檔的創建工作
          SAXBuilder
          DOMBuilder
          ResultSetBuilder
          注jdom的輸入源非常廣泛,可以是字符串,可以是其它的XML工具生成的XML文件。
          * org.JDOM.output
          輸出類,用于文檔轉換輸出
          XMLOutputter
          SAXOutputter
          DomOutputter
          JTreeOutputter
          從以上輸出類可以看出jdom可以輸出常用類型號XML文件
          下面是我寫的一個讀xml,一個創建XML的兩個例程
          ==================
          package jdom;

          /**
          * @author 
          * TODO 學習用例 ,pdw2009@tom.com
          *
          */
          import org.jdom.*;
          import org.jdom.input.*;
          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.io.*;
          import java.util.*;
          public class readabc {

          public static void main(String[] args) throws Exception{
          SAXBuilder sb=new SAXBuilder();//建立構造器
          Document doc=sb.build(new FileInputStream("E:\\eclipse\\myworkspace\\base\\src\\jdom\\abc.xml"));
          Element root=doc.getRootElement(); //獲得根結點

          List list=root.getChildren(); //將所有根結點下的子結點放入list
          for(int i=0;i<list.size();i++){
          System.out.println("----------------------");
          Element item=(Element)list.get(i); //獲得實體結體

          //用于獲得屬性
          String name=item.getAttributeValue("id");
          System.out.println("Name---->"+name);
          //獲得了節點

          String temptitle=item.getChildText("title");
          System.out.println("測試"+temptitle); //使用item獲得子節點屬性

          Element sub=item.getChild("title");
          String title=sub.getText();
          System.out.println("title---->"+title);

          Element sub2=item.getChild("email");
          String email=sub2.getText();
          System.out.println("email-->"+email);

          Element sub3=item.getChild("content");
          String content=sub3.getValue();
          System.out.println("content-->"+content);

          }

          }
          }
          -----------以上代碼要讀的xml文件內容如下----------------------------
          <?xml version="1.0" encoding="gb2312"?>
          <messages>
          <message id="jhgjg">i <title>jhgjg</title>
          <content>jhgjg</content>
          <email>jhjh</email>
          </message>
          <message id="fdsa">
          <title>fdsa</title>
          <content>fasdf</content>
          <email>fsadfa</email>
          </message>
          </messages>
          --------------------------------------------------------------------------------------------
          創建一個xml文件
          ----------------
          /*
          * Created on 2000-1-1
          *
          * TODO To change the template for this generated file go to
          * Window - Preferences - Java - Code Style - Code Templates
          */
          package jdom;
          import java.io.FileWriter;

          import org.jdom.*;
          import org.jdom.adapters.*;
          import org.jdom.adapters.*;
          import org.jdom.input.*;
          import org.jdom.output.Format;
          import org.jdom.output.XMLOutputter;
          import java.io.*;
          /**
          * @author *
          * TODO 學習用例 ,pdw2009@tom.com
          *
          */
          public class createonexml {

          public static void main(String[] args)throws Exception {
          Element carElement=new Element("car");
          Document mydoc=new Document(carElement);
          //carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90"));

          //添加內容
          carElement.addContent(new Element("make").addContent("DF"));
          carElement.addContent(new Element("year").addContent("1997"));
          carElement.addContent(new Element("color").addContent("green"));
          carElement.addContent(new Element("listenr").addContent("SSDDDBBA"));
          //添加注解
          carElement.addContent(new Comment("描述一輛車"));

          //輸出到文件
          XMLOutputter outer=new XMLOutputter();
          FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\car.xml");
          Format fm=Format.getPrettyFormat(); //設定XML文件的輸出格式
          fm.setEncoding("GBK");

          outer.setFormat(fm);
          outer.output(mydoc,fw);
          outer.output(mydoc,System.out);
          fw.close();
          }
          }
          ------------------以上代碼生成的xml文件內容如下---------------
          <?xml version="1.0" encoding="GBK"?>
          <car>
          <make>DF</make>
          <year>1997</year>
          <color>green</color>
          <listenr>SSDDDBBA</listenr>
          <!--描述一輛車-->
          </car>
          ---------------------------------------------------------------------------------------
          在jdom 1。0版本里輸出xml文檔時,我們必須定義該文檔的格式,如xml文件的編輯格式,輸出的xml文檔是否換行,是否刪除我作的空格,等。所以在輸出xml文檔時需定義一個Format對象類,并給相關屬性賦值,然后設定XMLOutputter所用到的格式類,outter.setFormat()。
          請關注我有關JDOM的文章希望對你有所幫助。。。。。

          詳細說明請參考jdom API文檔
          1
          lonely wolf  
          1 將一個xml文件輸出到一個字符串對象里
          XMLOutputter outputter = new XMLOutputter();
          Element element = new Element("Greeting");
          String hello = outputter.outputString(element);

          2 一個list轉換成一個xml文件。。雖然其list中的字段是固定了,我們也可以修改類集轉換代碼,以實現動態字段的轉換

          package jdom;
          import java.io.FileWriter;
          import java.util.*;
          import org.jdom.*;
          import org.jdom.input.*;
          import org.jdom.output.*;

          /**
          * @author  pdw2009@tom.com
          * TODO 將一個List對象,轉換一個XML文件
          */
          class Person{
          private String ID; //學號
          private String name; //姓名
          private String addr; //地址
          private String tel; //聯系電話
          private String email; //email地址
          /**
          * @return Returns the addr.
          */
          public String getAddr() {
          return addr;
          }
          /**
          * @param addr The addr to set.
          */
          public void setAddr(String addr) {
          this.addr = addr;
          }
          /**
          * @return Returns the iD.
          */
          public String getID() {
          return ID;
          }
          /**
          * @param id The iD to set.
          */
          public void setID(String id) {
          ID = id;
          }
          /**
          * @return Returns the name.
          */
          public String getName() {
          return name;
          }
          /**
          * @param name The name to set.
          */
          public void setName(String name) {
          this.name = name;
          }
          /**
          * @return Returns the tel.
          */
          public String getTel() {
          return tel;
          }
          /**
          * @param tel The tel to set.
          */
          public void setTel(String tel) {
          this.tel = tel;
          }
          /**
          * @return Returns the email.
          */
          public String getEmail() {
          return email;
          }
          /**
          * @param email The email to set.
          */
          public void setEmail(String email) {
          this.email = email;
          }
          }

          public class listtoxml {
          public List creatlist(){
          List list=new ArrayList();
          Person person=new Person();
          person.setAddr("廣西合浦");
          person.setID("1048");
          person.setName("hfggf");
          person.setTel("138777778888");
          person.setEmail("pdw2009@tom.com");
          list.add(person);

          person.setAddr("廣西南寧");
          person.setID("1036");
          person.setName("蠢盧");
          person.setTel("1387778888");
          person.setEmail("XXXXX@tom.com");
          list.add(person);
          return list;
          }
          public static void main(String[] args) throws Exception {
          listtoxml lx=new listtoxml();
          List list=lx.creatlist(); //生成Person類的對象list
          Element root=new Element("Student");//根條目;
          Iterator it=list.iterator(); //獲取iterator接口
          while(it.hasNext()){
          Person p=(Person)it.next();
          Element person=new Element("Person");
          person.setAttribute("ID",p.getID());
          root.addContent(person); //在根元素下,添加一個person子元素

          Element ele=new Element("Name");
          ele.setText(p.getName());
          person.addContent(ele); //在person元素下添加一個name的子元素

          Element addr=new Element("Address");
          addr.setText(p.getAddr());
          person.addContent(addr);

          Element tel=new Element("tel");
          tel.setText(p.getTel());
          person.addContent(tel);

          Element email=new Element("email");
          email.setText(p.getEmail());
          person.addContent(email);

          }
          Document doc=new Document(root);
          XMLOutputter outer=new XMLOutputter();
          Format fm=Format.getPrettyFormat();
          fm.setEncoding("GBK");
          outer.setFormat(fm);
          FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\listtoxml.xml");
          outer.output(doc,fw); //只需要把自己定義的FileWriter替換掉System.out就可以確定xml文件的輸出了
          }
          }

          僅供參與,只需要添加你的jdbc連接便于工作可實現,從數據庫里取出記錄并生



          定位節點
          XML
          是樹狀結構,類似檔案系統內數據夾的結構,XPath也類似檔案系統的路徑命名方式。不過XPath 是一種模式(Pattern),可以選出 XML檔案中,路徑符合某個模式的所有節點出來。例如要選catalog底下的cd中所有price元素可以用:
          /catalog/cd/price    

          
          

          如果XPath的開頭是一個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)表示文件中所有符合模式的元素都會被選出來,即使是處于樹中不同的層級也會被選出來。以下的語法會選出文件中所有叫做cd的元素(在樹中的任何層級都會被選出來):

          
          
          //cd
          
          

          選擇未知的元素
          使用星號(Wildcards,*)可以選擇未知的元素。下面這個語法會選出/catalog/cd 的所有子元素:

          
          
          /catalog/cd/*
          
          

          以下的語法會選出所有catalog的子元素中,包含有price作為子元素的元素。

          
          
          /catalog/*/price
          
          

          以下的語法會選出有兩層父節點,叫做price的所有元素。

          
          
          /*/*/price
          
          

          以下的語法會選擇出文件中的所有元素。

          
          
          //*
          要注意的是,想要存取不分層級的元素,XPath語法必須以兩個斜線開頭(//),想要存取未知元素才用星號(*),星號只能代表未知名稱的元素,不能代表未知層級的元素。

          選擇分支
          使用中括號可以選擇分支。以下的語法從catalog的子元素中取出第一個叫做cd的元素。XPath的定義中沒有第0元素這種東西。

          
          
          /catalog/cd[1]
          
          

          以下語法選擇catalog中的最后一個cd元素:(XPathj并沒有定義 first() 這種函式喔,用上例的 [1]就可以取出第一個元素。

          
          
          /catalog/cd[last()]
          
          

          以下語法選出含有price子元素的所有/catalog/cd元素。

          
          
          /catalog/cd[price]
          
          

          以下語法選出price元素的值等于10.90的所有/catalog/cd元素

          
          
          /catalog/cd[price=10.90]
          
          

          以下語法選出price元素的值等于10.90的所有/catalog/cd元素 price元素

          
          
          /catalog/cd[price=10.90]/price
          
          

          選擇一個以上的路徑
          使用Or操作數(|)就可以選擇一個以上的路徑。例如:

          
          
          /catalog/cd/title | catalog/cd/artist
           選擇所有title以及artist元素
           //title | //artist
           

          選擇所有title以及artist以及price元素

          
          
          //title | //artist | //price
           選擇屬性 
          XPath中,除了選擇元素以外,也可以選擇屬性。屬性都是以@開頭。例如選擇文件中所有叫做country的屬性:
           //@country
                   

          選擇所有含有country這個屬性的cd元素:

           
          //cd[@country]
                   

          以下語法選擇出含有屬性的所有cd元素

           
          //cd[@*]
                   

          以下語法選擇出country屬性值為UKcd元素

           
          //cd[@country='UK']
          posted on 2006-10-13 09:09 有貓相伴的日子 閱讀(1251) 評論(2)  編輯  收藏 所屬分類: jdk

          評論:
          # re: JDOM入門 2010-05-18 11:27 | lll
          寫的太好,太全了,太感謝了!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!贊!  回復  更多評論
            
          # re: JDOM入門 2014-05-03 18:48 | lin
          頂,  回復  更多評論
            
          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(32)

          隨筆分類(222)

          隨筆檔案(224)

          文章分類(4)

          文章檔案(7)

          相冊

          收藏夾(4)

          最新評論

          閱讀排行榜

          評論排行榜

          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 乌兰察布市| 元谋县| 宽城| 青龙| 宾川县| 义马市| 容城县| 攀枝花市| 苏尼特左旗| 四川省| 甘泉县| 阿拉善左旗| 尤溪县| 郎溪县| 永春县| 田林县| 正阳县| 资源县| 会泽县| 会东县| 岳池县| 南阳市| 哈尔滨市| 宾阳县| 龙口市| 迁西县| 固原市| 钟祥市| 克山县| 泾阳县| 寻乌县| 玉树县| 江门市| 鄂托克旗| 漳浦县| 蕉岭县| 喀什市| 尤溪县| 凤凰县| 哈密市| 准格尔旗|