|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
要求: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,但文件中没有此元素,不会出错 */ } } 返回类别: 教程 上一教程: 使用自定义标签,将结果集返回到jsp页面!(推荐方式) 下一教程: 用java制作excel格式报表 您可以阅读与"Java对象与XML文件之间相互转化(含源代码)"相关的教程: · JAVA对象序列化保存为XML文件的工具类 · 从XML到Java代码的数据绑定之对象 · JAVA对象序列化保存为XML文件的工具类 · 从XML到Java代码的数据绑定之对象【来自JAVA家】 · java实现FTP功能(源代码) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |