通過com.wutka.jox輕松實現JavaBeans與XML的相互轉換

          不用復雜的代碼,就可以讓您的JavaBeans自己控制到XML文件的相互轉化。本文展示了怎樣通過JOX來實現從JavaBeans到XML文件的相互轉換。

             為了靈活的滿足Web應用和Web services需求的變化,Java和XML的輕便性和可擴展性使它們成為解決這一問題的理想選擇。SAX (Simple API for XML), DOM (document.nbspObject Model), XSL (Extensible Stylesheet Language), XSLT (XSL Transformations), SOAP (Simple Object Access Protocol), and BML (Bean Markup Language)是XML領域內的相關技術。本文集合了Java和XML輕便和可擴展的優點,但又不需要開發人員了解上述的相關技術。
             在Java分布式應用中使用遠程方法調用(RMI),而不是直接用底層的socket或其它網絡鏈接代碼。EJB技術也使開發人員從transaction,recovery, activation等底層機制中解放出來。同樣,使用本文的JavaBean-XML映射組件,開發人員也不用直接處理與XML有關的APIs。

          1.先定義javaBean

          package com.wutka.jox.test;

          import com.wutka.jox.*;
          import java.util.*;

          public class TestBean implements java.io.Serializable
          {
              
          protected int foo;
              
          protected String bar;
              
          protected java.util.Date baz;
              
          protected Vector thingies;
              
          protected TestSubbean subbean;

              
          public TestBean()
              
          {
                  bar 
          = "";
                  baz 
          = new Date();
                  thingies 
          = new Vector();
              }


              
          public int getFoo() return foo; }
              
          public void setFoo(int aFoo) { foo = aFoo; }

              
          public String getBar() return bar; }
              
          public void setBar(String aBar) { bar = aBar; }

              
          public java.util.Date getBaz() return baz; }
              
          public void setBaz(java.util.Date aBaz) { baz = aBaz; }

              
          public TestSubbean getSub() return subbean; }
              
          public void setSub(TestSubbean aSub) { subbean = aSub; }

              
          public String[] getThingies()
              
          {
                  String[] retThingies 
          = new String[thingies.size()];
                  
          if (thingies.size() > 0) thingies.copyInto(retThingies);

                  
          return retThingies;
              }


              
          public void setThingies(String[] newThingies)
              
          {
                  thingies 
          = new Vector(newThingies.length);
                  
          for (int i=0; i < newThingies.length; i++)
                  
          {
                      thingies.addElement(newThingies[i]);
                  }

              }


              
          public String getThingies(int i)
              
          {
                  
          return (String) thingies.elementAt(i);
              }


              
          public void setThingies(int i, String thingy)
              
          {
                  thingies.setElementAt(thingy, i);
              }


              
          public String toString()
              
          {
                  StringBuffer ret 
          = new StringBuffer(
                      
          "foo="+foo+";bar="+bar+";baz="+baz.toString()+
                      
          ";thingies=");
                  
          for (int i=0; i < thingies.size(); i++)
                  
          {
                      
          if (i > 0) ret.append(",");
                      ret.append((String) thingies.elementAt(i));
                  }


                  ret.append(
          ";sub=");
                  ret.append(subbean.toString());

                  
          return ret.toString();
              }

          }


          2.xml文件

          <?xml version="1.0"?>
          <MarkTest>
          <thingies>http://www.5a520.cn 小說520網</thingies>
          <thingies>http://www.bt285.cn BT下載</thingies>
          <thingies>http://www.bt285.cn/caj/ caj下載</thingies>
          <thingies>http://www.bt285.cn/baolimotuo/ 暴力摩托</thingies>
          <thingies>http://www.bt285.cn/btjinglin bt精靈</thingies>
          <foo>5</foo>
          <baz>6/25/00 12:46 AM</baz>
          <bar>This is the website value</bar>
          <sub>
          <age>1</age>
          <name>wangdei</name>
          </sub>
          </MarkTest>


          下面的程序是把xml轉為成javaBean

          package com.wutka.jox.test;

          import com.wutka.jox.*;
          import java.io.*;

          public class TestDeser
          {
              
          public static void main(String[] args)
              
          {
                  
          try
                  
          {
                      FileInputStream in 
          = new FileInputStream("bean.xml");

                      JOXBeanInputStream joxIn 
          = new JOXBeanInputStream(in);

                      TestBean testBean 
          = (TestBean) joxIn.readObject(
                          TestBean.
          class);

                      System.out.println(testBean);
                  }

                  
          catch (Exception exc)
                  
          {
                      exc.printStackTrace();
                  }

              }

          }

           

          下面的程序是把javaBean轉為成xml

          package com.wutka.jox.test;

          import com.wutka.jox.*;
          import java.io.*;

          public class TestSer
          {
              
          public static void main(String[] args)
              
          {
                  
          try
                  
          {
                      TestBean b 
          = new TestBean();
                      b.setFoo(
          5);
                      b.setBar(
          "This is the bar value");
                      b.setThingies(
          new String[] {
                          
          "http://www.5a520.cn 小說520網""http://www.bt285.cn BT下載""http://www.bt285.cn/caj/ caj下載""http://www.bt285.cn/baolimotuo/ 暴力摩托""http://www.bt285.cn/btjinglin bt精靈" }
          );
                      TestSubbean sub 
          = new TestSubbean();
                      sub.setName(
          "Mark");
                      sub.setAge(
          35);
                      b.setSub(sub);

                      FileOutputStream fileOut 
          = new FileOutputStream("bean.xml");
                      JOXBeanOutputStream joxOut 
          = new JOXBeanOutputStream(fileOut);

                      joxOut.writeObject(
          "MarkTest", b);

                      joxOut.close();
                  }

                  
          catch (Exception exc)
                  
          {
                      exc.printStackTrace();
                  }

              }

          }


          參考網址: http://www.wutka.com/joxdownload.html  jox下載
                           http://www.wutka.com/jox.html 主頁

          需要的代碼請留下e-mail哦.

          posted on 2009-03-02 20:42 wang9354 閱讀(1554) 評論(0)  編輯  收藏

          導航

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辽宁省| 锡林郭勒盟| 柘荣县| 工布江达县| 仁化县| 广元市| 迁西县| 汝州市| 达孜县| 长寿区| 泉州市| 昆山市| 建平县| 威宁| 华坪县| 天峨县| 射阳县| 西贡区| 雅江县| 突泉县| 岐山县| 瓦房店市| 什邡市| 阳高县| 浦县| 峨边| 宿迁市| 连平县| 鄂托克前旗| 天柱县| 兴隆县| 岱山县| 来凤县| 拉萨市| 孟津县| 海口市| 古田县| 呼玛县| 通化县| 介休市| 新沂市|