apache common Digester 解析XML文件的问题

yixiaogang109 2011-08-31 05:48:13
<student name="Tom" course="JSP"/>

<student>
<name>Tom</name>
<course>JSP</course>
</student>
这个有什么去吧吗?
我用apache common Digester 解析XML的时候,为什么用
<student>
<name>Tom</name>
<course>JSP</course>
</student>
有结果,而用
<student name="Tom" course="JSP"/>就没有结果啊?
我的代码下

package com.tongda.whl.digester;

import java.util.Vector;

import org.apache.commons.digester3.Digester;

public class DigestTest {

@SuppressWarnings("unchecked")
private Vector students;

@SuppressWarnings("unchecked")
public DigestTest() {
students = new Vector(5);
}

public void addStudent(Student student) {
students.add(student);
}

public String toString() {
return ((Student) students.get(0)).getName();
}

public void digest() {
// digest2.0支持jdk1.5,并且依赖 logging 1.1.1 和 beanutils 1.8.0
// 创建实例
Digester digester = new Digester();
// 将初始对象压入digester的stack
digester.push(this);
// 指明匹配模式和要创建的类
digester.addObjectCreate("students/student", Student.class);
// 设置对象属性
// digester
digester.addBeanPropertySetter("students/student/name");
digester.addBeanPropertySetter("students/student/course");
// 当移动到下一个标签中时的动作
digester.addSetNext("students/student", "addStudent");
try {
// 解析,xml文件放在classpath下
DigestTest ds = (DigestTest) digester.parse(getClass()
.getClassLoader().getResourceAsStream("students.xml"));
System.out.println(ds);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String args[]) {
DigestTest test = new DigestTest();
test.digest();
}

}


package com.tongda.whl.digester;

public class Student {

private String name;
private String course;

public void setName(String name) {
this.name = name;
}

public void setCourse(String course) {
this.course = course;
}

public String getName() {
return this.name;
}

public String getCourse() {
return this.course;
}
}


<students>
<student name="Tom" course="JSP"/>
</students>
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Chain Chain 提供实现组织复杂的处理流程的“责任链模式”. CLI CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. Codec Codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder. Collections Commons-Collections 提供一个类包来扩展和增加标准的 Java Collection框架 Configuration Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助. Daemon 一种 unix-daemon-like java 代码的替代机制 DBCP Commons-DBCP 提供数据库连接池服务 DbUtils DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码. Digester Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在JSP2.0规范中定义的EL表达式的解释器. FileUpload FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 XML 的脚本和处理引擎。 Jelly 借鉴了 JSP 定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly 可以用在命令行, Ant 或者 Servlet之中。 Jexl Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言。. JXPath Commons-JXPath 提供了使用Xpath语法操纵符合Java类命名规范的 JavaBeans的工具。也支持 maps, DOM 和其他对象模型。. Lang Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能 Latka Commons-Latka 是一个HTTP 功能测试包,用于自动化的QA,验收和衰减测试. Launcher Launcher 组件是一个交叉平台的Java 应用载入器。 Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。.原始的 Java 类来自于Jakarta Tomcat 4.0 项目 Logging Commons-Logging 是一个各种 logging API实现的包裹类. Math Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题. Modeler Commons-Modeler 提供了建模兼容JMX规范的 Mbean的机制. Net Net 是一个网络工具集,基于 NetComponents 代码,包括 FTP 客户端等等。 Pool Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现. Primitives Commons-Primitives提供了一个更小,更快和更易使用的对Java基本类型的支持。当前主要是针对基本类型的 collection。. Validator The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧