tomcat之catalina使用Digester解析XML配置文件
2017-07-11 13:29
886 查看
Catalina使用Digester解析XML配置文件,所以这里讲解一下如何使用Digester读取配置文件。
Digester是一款用于将XML转换为java对象的事件驱动型工具,是对SAX的高层次封装,隐藏了XML节点具体的层次细节,使开发者更加专注于处理过程。Digester最早作为struts的一部分,后来移到了Apache Commons项目中,maven依赖如下
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
示例代码如下:
首先定义一个Java对象
package org.csu.coderlee.tomcat.digester;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by lixiang on 2017 07 11 下午12:52.
*/
public class Department {
private String name;
private String code;
private Map<String, String> extension = new HashMap<String, String>();
private List<User> users = new ArrayList<User>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public void addUser(User user) {
this.users.add(user);
}
public void putExtension(String name, String value) {
this.extension.put(name, value);
}
}
上述代码中,Department对象包含name和code两个属性,以及一个User的列表,一个表示扩展属性的Map
要转换的XML文件内容如下 test.xml
<?xml version="1.0" encoding="utf-8" ?>
<department name="deptname001" code="deptcode001">
<user name="username001" code="usercode001"></user>
<user name="username002" code="usercode002"></user>
<extension>
<property-name>director</property-name>
<property-value>joke</property-value>
</extension>
</department>
这样准备工作已经完成,我们可以来编写代码完成XML的解析
package org.csu.coderlee.tomcat.digester;
import org.apache.commons.digester.Digester;
import java.io.File;
/**
* Created by lixiang on 2017 07 11 下午1:01.
*/
public class DigesterHandler {
public static void main(String[] args) {
Digester digester = new Digester();
digester.setValidating(false);
// digester.setRules(true);
//匹配department节点时, 创建Department对象
digester.addObjectCreate("department", Department.class);
digester.addSetProperties("department");
digester.addObjectCreate("department/user", User.class);
digester.addSetProperties("department/user");
digester.addSetNext("department/user", "addUser");
digester.addCallMethod("department/extension", "putExtension", 2);
digester.addCallParam("department/extension/property-name", 0);
digester.addCallParam("department/extension/property-value", 1);
try {
Department department = (Department) digester.parse(new File("/Users/lixiang/workspace/javase/src/main/java/org/csu/coderlee/tomcat/digester/test.xml"));
System.out.println(department);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Digester是一款用于将XML转换为java对象的事件驱动型工具,是对SAX的高层次封装,隐藏了XML节点具体的层次细节,使开发者更加专注于处理过程。Digester最早作为struts的一部分,后来移到了Apache Commons项目中,maven依赖如下
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
示例代码如下:
首先定义一个Java对象
package org.csu.coderlee.tomcat.digester;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by lixiang on 2017 07 11 下午12:52.
*/
public class Department {
private String name;
private String code;
private Map<String, String> extension = new HashMap<String, String>();
private List<User> users = new ArrayList<User>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public void addUser(User user) {
this.users.add(user);
}
public void putExtension(String name, String value) {
this.extension.put(name, value);
}
}
package org.csu.coderlee.tomcat.digester; /** * Created by lixiang on 2017 07 11 下午1:18. */ public class User { private String name; private String code; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } }
上述代码中,Department对象包含name和code两个属性,以及一个User的列表,一个表示扩展属性的Map
要转换的XML文件内容如下 test.xml
<?xml version="1.0" encoding="utf-8" ?>
<department name="deptname001" code="deptcode001">
<user name="username001" code="usercode001"></user>
<user name="username002" code="usercode002"></user>
<extension>
<property-name>director</property-name>
<property-value>joke</property-value>
</extension>
</department>
这样准备工作已经完成,我们可以来编写代码完成XML的解析
package org.csu.coderlee.tomcat.digester;
import org.apache.commons.digester.Digester;
import java.io.File;
/**
* Created by lixiang on 2017 07 11 下午1:01.
*/
public class DigesterHandler {
public static void main(String[] args) {
Digester digester = new Digester();
digester.setValidating(false);
// digester.setRules(true);
//匹配department节点时, 创建Department对象
digester.addObjectCreate("department", Department.class);
digester.addSetProperties("department");
digester.addObjectCreate("department/user", User.class);
digester.addSetProperties("department/user");
digester.addSetNext("department/user", "addUser");
digester.addCallMethod("department/extension", "putExtension", 2);
digester.addCallParam("department/extension/property-name", 0);
digester.addCallParam("department/extension/property-value", 1);
try {
Department department = (Department) digester.parse(new File("/Users/lixiang/workspace/javase/src/main/java/org/csu/coderlee/tomcat/digester/test.xml"));
System.out.println(department);
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- [Java学习]使用digester 解析xml配置文件
- 使用digester 解析xml配置文件
- [Java学习]使用digester 解析xml配置文件
- 使用Digester解析XML配置文件
- tomcat配置文件web.xml与server.xml解析--重要
- XML配置文件和对象的互相转化(使用Digester)
- Tomcat的服务器配置文件server.xml解析
- 服务器使用Tomcat配置server.xml文件通过域名直接跳转到项目
- 使用XML作为配置文件的方式完成模拟TOMCAT(XML,socket访问浏览器,DTD)
- 服务器使用Tomcat配置server.xml文件通过域名直接跳转到项目
- Drools入门-----------环境搭建,分析Helloworld Drools5.0的xls文件转drl文件提升解析效率 使用BRMS的Tomcat6.0配置
- 在config配置文件添加iis的Mime类型,检测文件中是否存在添加语句,使用xml解析方法
- 使用XML作为项目的配置文件使用,并解析之,获得数据作为链接数据库的参数
- tomcat server.xml配置文件 解析
- 使用Struts Digester来解析XML文件
- Tomcat中Digester解析server.xml文件
- 使用Digester解析XML文件和JAVA对象的映射
- Tomcat源码的catalina中利用Digester解析conf/server.xml
- Tomcat的服务器配置文件server.xml解析
- Linux下使用libxml2解析XML配置文件