JOX是一套用户XML document.和Java beans之间进行数据传递的JAVA类库。
一个简单直接的JOX实例:
JOX是非常的简单易用。假设你现在已经有了下面的Java Bean。
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 文件:
<?xml version="1.0"?>
<MarkTest>
<thingies>Moe</thingies>
<thingies>Larry</thingies>
<thingies>Curly</thingies>
<thingies>Shemp</thingies>
<thingies>Curly Joe</thingies>
<foo>5</foo>
<baz>6/25/00 12:46 AM</baz>
<bar>This is the bar value</bar>
<sub>
<age>35</age>
<name>Mark</name>
</sub>
</MarkTest>
下面的程序将读出XML并把数据存储于TestBean:
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();
}
}
}
你现在能作的就是创建FileInputStream或者FileReader去读取XML文件,并且把它打包进JOXBeanInputStream或者JOXBeanReader。接着你就可以让JOX读这个对象和该对象的类。
写一个输出XML文件的BEAN就这么简单啦^_^:
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[] {
"Moe", "Larry", "Curly", "Shemp", "Curly Joe" });
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();
}
}
}
你必须在这个Java
Bean中设置一些值,创建一个用于写XML文件的输出流,用JOXBeanOutputStream或者JOXBeanWriter规定这个输出流,并
写相应的对象。以后,你就不必重复做这些工作啦^_^。只要你有了DTD,JOX就可以根据这个DTD识别根标签了。
为了后面的例子,我假定你已经创建了下面的DTD文件了:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT MarkTest (Thingies*, foo?, BAR?, baz? S-U-B?)>
<!ELEMENT Thingies #PCDATA>
<!ELEMENT foo #PCDATA>
<!ELEMENT BAR #PCDATA>
<!ELEMENT baz #PCDATA>
<!ELEMENT S-U-B (age)>
<!ELEMENT age #PCDATA>
<!ATTLIST S-U-B name CDATA "">
下面的程序可以读取DTD文件并且传递给JOX,使JOX可以规范输出啦^_^:
package com.wutka.jox.test;
import com.wutka.jox.*;
import com.wutka.jox.dtd.*;
import java.io.*;
public class TestSerDTD
{
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[] {
"Moe", "Larry", "Curly", "Shemp", "Curly Joe" });
TestSubbean sub = new TestSubbean();
sub.setName("Mark");
sub.setAge(35);
b.setSub(sub);
FileOutputStream fileOut = new FileOutputStream("bean.xml");
FileReader reader = new FileReader("testbean.dtd");
Parser dtdParser = new Parser();
DTD dtd = dtdParser.parse(reader);
reader.close();
JOXBeanOutputStream joxOut = new JOXBeanOutputStream(dtd, fileOut);
joxOut.writeObject("MarkTest", b);
joxOut.close();
}
catch (Exception exc)
{
exc.printStackTrace();
}
}
}
分享到:
相关推荐
用来读写xml的组件很多,比如dom4j, sax, JDom,Digester等,但是很多组件用起来很麻烦,今天给大家推荐一个超级简单的组件JOX, JOX是一套用户XML document和Java beans之间进行数据传递的JAVA类库。...
JOX(Java Object eXchange)是一套用于在XML文档和Java Beans之间进行数据交换的类库。这个库简化了XML解析和Java对象之间的转换过程,使得开发人员能够更便捷地处理XML数据,特别是在需要在不同系统间传输Java对象...
JOX(Java Object eXchange)是一个轻量级的库,专门用于XML和Java对象之间的转换。在Java编程中,XML常被用作数据交换格式,因为它具有良好的可读性和可扩展性。JOX提供了简单易用的API,使得开发者能够方便地将...
为了灵活的满足Web应用和Web services需求的变化,Java和XML的轻便性和可扩展性使它们成为解决这一问题的理想选择。SAX (Simple API for XML), DOM (document.nbspObject Model), XSL (Extensible Stylesheet ...
JOX(Java Object eXchange)是一个轻量级的开源库,用于方便地在Java对象和XML之间进行转换。在Java开发中,我们经常需要将JavaBean对象的数据转化为XML格式,以便于数据交换、存储或网络传输。这个实例可能是为了...
jox是一组java类库 实现javaBean与xml相互转化 更加容易
在开发过程中JavaBean与xml之间相互转换,jox给我们提供了很好的方便,但是jox官网已关闭,所以在这里方便大家下载使用;此资源中包含了jox所有依赖的jar包;解决xml中文格式化问题,JOXBeanOutputStream joxOut = ...
在实际项目中,有时我们需要在JavaBean和XML之间进行转换,以便于数据的持久化、网络传输或者跨平台交互。本篇文档将详细介绍如何使用jox-1.17b3.jar库来实现这一转换过程,并提供具体的例子。 1. **JavaBean到XML...
jox库可能提供了便利的方法和工具,使得开发者可以轻松地在Java对象和XML文档之间进行序列化和反序列化操作。 "真正整合全部的包"意味着jox库不只是一个简单的模块,而是将所有必要的组件集成为一个完整的解决方案...
汇总了jox所有依赖的包,可以支持xml与javabean之间相互转换,我也是在逐步调试过程中,把这些包汇总上来的,jox的站点已经停止访问了,放在这里方便大家下载。生成的xml可以格式化还有中文解决等。...
Jox(Java Object to XML)是一个轻量级的Java库,专门用于在Java对象和XML之间进行转换。它提供了一种简单的方式来映射JavaBean属性到XML元素,反之亦然。在本例中,我们主要关注`BeanXmlMapping`工具类,它是Jox库...
但java本身提供的操作xml的方式有些麻烦,而JOX能够自动的把javabean转为xml,不需要定义DTD,不需要关注bean中的各个属性,几行代码就搞定。同时,把xml转换回javabean也很方便。从网上搜了很久也没有一篇完整的...
如果它是特定领域的工具,如游戏开发或科学计算,那么它可能会包含特定领域的算法和数据结构。 总之,jox-1.17b3是一个Java开发相关的软件包,可能是一个功能丰富的库,具有完整的集成,便于开发者直接使用。不过,...
jox-1.16.jar jox-1.16.jar
通过查看com包下的各个子包和类,我们可以发现jox1.6的功能模块划分,例如,`com.jox.serialization`可能是负责序列化的部分,而`com.jox.network`可能包含网络通信相关的类。 源码分析的过程也是学习软件工程实践...
微信小程序组件,持续更新中jox-wxapp-master.zip
找了好久,才配出了这个例子,这个还是一个国外网站的,不容易,例子写的很简单,容易理解,千万别错过,
链接:https://pan.baidu.com/s/1YJljQQULK0vfCm66EgQZ4A 密码:6jox ADS分享总汇1
这种设计允许用户根据电网电压的实际波动情况,灵活调整电压,以保持设备所需的±5%的电压范围。 在具体应用中,选择了三台500VA、初级电压220V、次级电压12V的控制变压器。这些参数的选择考虑到电梯电机的变频调...