通过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();

你可能感兴趣的:(bean,xml,socket,网络应用,XSL)