首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典
Java对象与XML文件之间相互转化(含源代码)-JSP教程,Java技巧及代码
作者:网友供稿 点击:190
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
要求:jdk1.4以上


下载:http://spaner.zj.com
示例:

<?xml version="1.0" encoding="utf-8"?>

<!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd">


<web-app>
//  根元素必须对应一个java类,这里是webapplicationlabel.java
//documentobject doc = new documentobject( "web-app" , webapplicationlabel.class )
//  参数"web-app"对应根元素标签的名称,以下同

<servlet>
//  所有包含元素子结点的必须对应一个java类,这里是servletlabel.java
//elementobject serv=doc.addchild( elementobject.multi , "servlet" ,servletlabel.class , "servlets" );
//  在此元素在web-app中可以有0到n个servlet(对应参数elementobject.multi),在webapplicationlabel.java中
//必须有一个属性servletlabel[] servlets(这里名称可自定,对应下一行的最后一个参数)及它的set和get方法
//  如果在web-app元素中有1到n个servlet元素,则第一个参数是elementobject.morethanone,并且在webapplicationlabel.java中
//必须有一个属性servletlabel[] servlets及它的set和get方法
//  如果在web-app元素中只允许一个servlet元素,则第一个参数是elementobject.single,并且在webapplicationlabel.java中
//必须有一个属性servletlabel servlet及它的set和get方法
//  如果在web-app元素中有0或1个servlet元素,则第一个参数是elementobject.optional,并且在webapplicationlabel.java中
//必须有一个属性servletlabel servlet及它的set和get方法

<servlet-name>action</servlet-name>
//对于这种没有属性和元素子结点,只有文本子结点的元素,可以这样简单处理
//serv.addsimplechild(elementobject.single , "servlet-name" , string.class ,"name");
//此元素是servlet的子结点,所以向serv这个对象添加,而不是向doc中添加,
//其中第一个参数的处理与servlet元素相同,在servletlabel.java中有一个属性string name及它的set和get方法,
//这个属性只能是基本数据类型或string,string.class是指它的数据类型,"name"是属性的名称,
//如果是基本数据类型(int,long)等,对应类型是integer.type,long.type等,
//如:addsimplechild(element.optional,"lable-name",integer.type,"name");
<servlet-class>org.apache.struts.action.actionservlet</servlet-class>
//serv.addsimplechild(elementobject.single,"servlet-class",string.class,"servletclass");
//同servlet-name
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/web-inf/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/web-inf/struts-bean.tld</taglib-uri>
<taglib-location>/web-inf/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/web-inf/struts-html.tld</taglib-uri>
<taglib-location>/web-inf/struts-html.tld</taglib-location>
</taglib>
</web-app>

程序:webapplicationlabel.java

public class webapplicationlabel{//必须是public class
private servletlabel[] servlets;
private servletmapping[] maps;
private taglib[] tags;

public webapplicationlabel(){}//必须有public类型的无参数构造方法

public void setservlets(servletlabel[] servlets){
this.servlets=servlets;
}
public servletlabel[] getservlets(){
return servlets;
}

//其它get和set方法未列出,以下同

}

public class servletlabel{
private string name;
private string servletclass;
private arraylist params=new arraylist();
private int startup;

public servletlabel(){}

public void setname(string name){
this.name=name;
}

public string getname(){
return name;
}

public void setservletclass(string servletclass){
this.servletclass=servletclass;
}

public string getservletclass(){
return servletclass;
}

public int getstartup(){
return startup;
}
//这里定义一个整数类型的变量,它是可选的
public void setstartup(int startup){
return startup;
}

public servletparam[] getparams(){
servletparam[] rs=new servletparam[params.size()];
return (servletparam[])params.toarray(rs);
}
//注意这里,实际上不用定义变量servletparam[] params,只要有get和set方法就行
public void setparams(servletparam[] rs){
for(int i=0;i<rs.length;i++){
params.add(rs[i]);
}
}

public void addparams(servletparam param){
params.add(param);
}

}

public class servletparam{
private string name;
private string value;

public servletparam(){}
//set和get方法略

}

public class servletmapping{
private string name;
private string url;

public servletmapping(){}
//set和get方法略

}

public class tablib{
private string uri;
private string location;

public tablib(){}
//set和get方法略

}

以下是测试方法:

注意 :以下并没有对web.xml文件全面定义,对一般的web.xml文件只能分析出上面列出的结点


public class test(){
//使用static变量和块是为了加快第二次对xml文件的分析。你可以先加到main方法中进行测试,测试后再copy到static块
private static documentobject doc=new documentobject( "web-app" , webapplicationlabel.class );//根元素
static{
elementobject serv=doc.addchild( elementobject.multi , "servlet" ,servletlabel.class , "servlets" );//servlet元素
serv.addsimplechild(elementobject.single,"servlet-name",string.class,"name");//servlet中的name元素
serv.addsimplechild(elementobject.single,"servlet-class",string.class,"servletclass");//servlet中的servlet-class元素,注意大小写
serv.addsimplechild(elementobject.multi,"init-param",servletparam.class,"params");//servlet中的init-param元素,它是0到n个
serv.addsimplechild(elementobject.optional,"load-on-startup",integer.type,"startup");
//servlet中的load-on-startup元素,它是可选的int型.

elementobject map=doc.addchild( elementobject.multi , "servlet-mapping" ,servletmapping.class , "maps" );
map.addsimplechild(elementobject.single,"servlet-name",string.class,"name");
map.addsimplechild(elementobject.single,"url-pattern",string.class,"url");

elementobject tag=doc.addchild( elementobject.multi , "taglib" ,servletlabel.class , "servlets" );
map.addsimplechild(elementobject.single,"taglib-uri",string.class,"uri");
map.addsimplechild(elementobject.single,"taglib-location",string.class,"location");


/*

如果元素servlet有一个或多个属性,这样来处理:
serv.addattribute ( string label , class type , string property ,boolean required )
label是属性名称,type是类型(只能是基本类型或string),
property是它是servletlabel.java中的属性名称,required是指它是否必须的

如果元素servlet中还包含了要处理的文本结点(如:<servlet name="action">org.apache.struts.action.actionservlet</servlet>)
serv.addtextproperty ( string textproperty , class texttype ,boolean required )
textproperty是它在servletlabel.java中的属性名称,type是类型(只能是基本类型或string),required是指它是否必须的
注意,调用了这个方法将不能再调用方法addsimplechild和addchild方法,反之亦然。
*/

}

public static void main(string[] args){
webapplicationlabel app=(webapplicationlabel)doc.read(new file("d:/1.xml"));//读取文件


doc.write(app,new file("d:/2.xml"));//写入到xml文件

/*
写入文件时,如果一个元素
定义为elementobject.single,但它的对应值为null,出错
定义为elementobject.optional,但它的对应值为null,不会出错
定义为elementobject.morethanone(多于一个),但它的对应值为null,出错
定义为elementobject.multi,但它的对应值为null,不会出错
读取文件时,会忽略所有没有在doc中定义的结点
定义为elementobject.single,但文件中没有此元素,出错
定义为elementobject.optional,但文件中没有此元素,不会出错
定义为elementobject.morethanone(多于一个),但文件中没有此元素,出错
定义为elementobject.multi,但文件中没有此元素,不会出错
*/
}
}



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·在VB中使用IE的 WebBrowser控件改进界面设计-.NET教程,VB.Net语言
·ASP 生成 XBM 图可用作验证码-ASP教程,ASP应用
·Java IO学习基础之读写文本文件-JSP教程,Java技巧及代码
·Java对象与XML文件之间相互转化(含源代码)-JSP教程,Java技巧及代码
·数字电视机顶盒(二)
·几个C#编程的小技巧 (一)-.NET教程,C#语言
·PHP教程.应用实例8-PHP教程,PHP应用
·自动填充固定行数的 GridView-.NET教程,数据库应用
·用表格巧妙制作导航条按钮-网页设计,Dreamweaver
·JSP的环境引擎--websphere-JSP教程,Jsp/Servlet
最新文章
·王顺铨:站在消费者角度看互联网_站长访谈
·把个人网站转变为商业网站全攻略_站长心得
·创业者与vc的接触之道_站长心得
·photoshop滤镜轻松制作照片柔光效果_photoshop教程
·草根站长离精英还很远很远,厦门站长大会感受_站长心得
·合理的网页设计具有哪些特征_站长心得
·谈谈网站设计的10个要点1_站长心得
·幽灵现象 新网站google排名不稳定的根源_google推广
·我告诉你怎么学搜索_google推广
·google搜索从入门到精通_google推广
相关主题
  • JAVA对象序列化保存为XML文件的工具类-JSP教程,Java技巧及代码
  • Java对等计算实践:基于 IP 多播的发现-JSP教程,Java技巧及代码
  • java对象序列化学习笔记-JSP教程,Java技巧及代码
  • JAVA对JPEG图片进行处理-JSP教程,Java技巧及代码
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭