Castor的XML数据绑定应用
来源:互联网 发布:spring源码解析书 编辑:程序博客网 时间:2024/05/17 06:57
Java与.net最大不同之处在于,Java是在开放源代码领域中成长的,所以,你不必苦苦等待某一个公司的产品开发进度,在开源领域,每天都诞生有关Java令人激动的新技术,你可以仔细研究它,可能是昙花一现,更可能是一种全新技术的发现,这种心情已经让你忘记了自己孤独的境遇。
Castor无疑是一种新的实用的概念,它的XML对象化操作和JDO概念都是令人激动的。我们这里只谈谈它的XML数据绑定技术。
对XML操作,我们已经知道SAX DOM 和JDOM, Castor有什么不同?
Castore能够将XML数据映射成Java对象数据,这样你只要和Java数据对象操作,就相当于对XML数据操作,这种概念无疑方便我们将XML作为类似数据库那样的数据源。
我们知道,现在操作数据库通过EJB JDO来实现对Java对象数据操作,Castor为我们提供了对XML的这样的操作,这样岂不是更方便?而SAS DOM JDOM是对XML中具体数据结构进行操作,没有Castor那样完全对象化的概念。
举例说明:
有page.xml文件如下
<homepagecollection name="this is sample">
<homepagecontent id="1">
<name>About Us</name>
<navlink>1.jsp</navlink>
<icon>images/icon.gif</icon>
<description>An in-depth look at creating applications with XML.</description>
</homepagecontent>
<homepagecontent id="2">
<name>Product|Service</name>
<navlink>2.jsp</navlink>
<icon>images/icon.gif</icon>
<description>let's tak a look at our products.</description>
</homepagecontent>
</homepagecollection>
这是个很典型的XML文件,homepagecollection中有多个homepagecontent
那么使用Castor,我们只要建立两个对象,就可以对这个XML文件进行读写操作。
public class Homepagecontent implements java.io.Serializable{
private Integer id;
private String name;
private String navlink;
private String icon;
private String description;
public Homepagecontent(){
}
public Integer getId(){ return id;}
public void setId(){ this.id=id;}
public String getName(){ return name;}
public void setName(){ this.name=name;}
public String getNavlink(){ return navlink;}
public void setLink(){ this.navlink=navlink;}
public String getIcon(){ return icon;}
public void setIcon(){ this.icon=icon;}
public String getDescription(){ return description;}
public void setDescription(){ this.description=description;}
}
上面这个Javabean中,setXXXX和getXXXX中的XXXX就是page.xml中homepagecontent中对应名称。
这个很类似于Javabean和数据库之间的对应关系。
再来看看Homepagecollection.java
public class Homepagecollection implements java.io.Serializable{
private String SiteName;
private List homepagecontents = new ArrayList();
public Homepagecollection() { }
// -- manipulate the List of Page objects
public void addHomePageContent(Homepagecontent homepagecontent) {
homepagecontents.add(homepagecontent);
}
public List getHomepagecontents() {
return homepagecontents;
}
// -- manipulate the name of the address book
public String getName() {
return SiteName;
}
public void setName(String name) {
this.SiteName = name;
}
}
Homepagecollection.java就是对应page.xml 由于page.xml中Homepagecollection内包含多个Homepage,程序里使用List来表示。
那么page.xml中的数据如何读入Homepagecollection.java中?
public HomePageHandle(String mapfile,String xmlfile) throws Exception{this.xmlfile=xmlfile;
try{
mapping = new Mapping();
mapping.loadMapping(mapfile);
}catch(Exception e){
throw new Exception(e.getMessage());
}
}
// -- page.xml中的数据读入Homepagecollection
public Homepagecollection read() throws Exception{
Homepagecollection homepages=null;
try{
Unmarshaller un = new Unmarshaller(Homepagecollection.class);
un.setMapping(mapping);
FileReader in = new FileReader(xmlfile);
homepages = (Homepagecollection) un.unmarshal(in);
in.close();
}catch(Exception e){
throw new Exception(e.getMessage());
}
return homepages;
}
注意。只要使用Unmarshaller这一句就将XML的数据读入JavaBean Homepagecollection中,这样以后只要对Homepagecollection.class进行数据操作就可以。
比如使用Homepagecollection.getName()就可以得到page.xml中的"this is sample".
是不是很方便?
注意这里要配置mapping.xml文件:
<?xml version="1.0" encoding="UTF-8"?><mapping>
<description>a map file for our new template system</description>
<class name="Homepagecontent">
<map-to xml="homepagecontent"/>
<field name="id" type="integer">
<bind-xml name="id" node="attribute" />
</field>
<field name="name" type="string" />
<field name="navlink" type="string" />
<field name="icon" type="string" />
<field name="description" type="string" />
</class>
<class name="Homepagecollection">
<map-to xml="homepagecollection"/>
<field name="name" type="string">
<bind-xml name="name" node="attribute" />
</field>
<field name="homepagecontents" type="Homepagecontent" collection="collection" />
</class>
</mapping>
这个文件主要让Castor来对page.xml和Homepagecollection.class Homepagecontent.class装载(Unmarshaller)或卸载(Marshaller)数据用。
关于Castor进一步在项目中的使用见《Java实用系统开发指南》第4章
- Castor的XML数据绑定应用
- Castor的XML数据绑定应用
- Castor的XML数据绑定应用
- Castor的XML数据绑定应用
- Castor以及Java和XML数据绑定
- Castor 进行数据绑定
- 把 struts的 Actionform与 castor的xml数据绑定相结合。
- Castor:基于XML的Java开源数据绑定框架(支援JDO)
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- 用Castor进行java到xml的绑定
- 实现 Castor 数据绑定: 安装和设置 Castor
- Castor进行XML数据绑定时的一点问题
- java xml 绑定 —— castor框架
- 常见面试题一
- 下个加密器都这么麻烦
- 转载java实现自动登陆
- Caster
- DWR入门和学习
- Castor的XML数据绑定应用
- 消息中间件原理
- sql 一些不常用的 语句
- (转)水晶报表插件
- 做好一件事
- STL之bind1st
- WebServices 动态调用 接口自动创建 EMIT
- memcached协议及命令
- Quagga安装配置