通过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
2.xml文件
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();
}
}
<?
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();发表评论
- 浏览: 20155 次

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
如何注意HttpSession的线 ...
我也来转到BLOG中做记录。
-- by hifun -
如何注意HttpSession的线 ...
不错,在一个复杂的应用里面,不应该假设SESSION是线程安全的,否则很容易出问 ...
-- by srdrm -
MySQL数据库优化
...
-- by bnmcvzx -
Google搜索引擎技术实现探 ...
...
-- by kaka99 -
用freemarker生成html页面
http://www.bt170.cn BT下载,我的也是这样做的
-- by hjw0571






评论排行榜