1、下载commons-digester1.6.jar
2、新建一java工程。
3、在模块目录下根据需要建立4个package——action,dto,input,config.
4、在input内存放input.xml文件。其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<models>
<model id="0001" name="测试一">
<book id="20091113" name="中国书"/>
<book id="20091113" name="中国书"/>
<magazine id="2009113" name="中国杂志" time="2009"/>
<magazine id="2009113" name="中国杂志" time="2009"/>
</model>
<model id="0002" name="测试二">
<book id="20091113" name="中国书"/>
<book id="20091113" name="中国书"/>
<magazine id="2009113" name="中国杂志" time="2009"/>
<magazine id="2009113" name="中国杂志" time="2009"/>
</model>
</models>
</root>
5、在dto内新建5个java bean。(根据实际(xml文件)情况而定)。其中包含get,set方法。以及add(下一级节点名称)方法。
5.1、Root.java
package com.test.digester.test.dto;
import java.util.Vector;
public class Root {
private Vector<Models> models = new Vector<Models>();
public Vector<Models> getModels() {
return models;
}
public void setModels(Vector<Models> models) {
this.models = models;
}
public void addModels(Models obj) {
models.addElement(obj);
setModels(this.models);
}
}
5.2、Models.java
package com.test.digester.test.dto;
import java.util.Vector;
public class Models {
private Vector<Model> models = new Vector<Model>();
public Vector<Model> getModels() {
return models;
}
public void setModels(Vector<Model> models) {
this.models = models;
}
public void addModel(Model obj) {
models.addElement(obj);
setModels(this.models);
}
}
5.3、Molde.java
package com.test.digester.test.dto;
import java.util.Vector;
public class Model {
private String id;
private String name;
private Vector<Book> books = new Vector<Book>();
private Vector<Magazine> magazines = new Vector<Magazine>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Vector<Book> getBooks() {
return books;
}
public void setBooks(Vector<Book> books) {
this.books = books;
}
public Vector<Magazine> getMagazines() {
return magazines;
}
public void setMagazines(Vector<Magazine> magazines) {
this.magazines = magazines;
}
public void addBook(Book obj) {
books.addElement(obj);
setBooks(this.books);
}
public void addMagazine(Magazine obj) {
magazines.addElement(obj);
setMagazines(this.magazines);
}
}
5.4、Book.java
package com.test.digester.test.dto;
public class Book {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5.5、Magazine.java
package com.test.digester.test.dto;
public class Magazine {
private String id;
private String name;
private String time;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
6、在config内创建config.xml文件,定义其解析规则:
<?xml version="1.0" encoding="UTF-8"?>
<digester-rules>
<pattern value="root">
<object-create-rule classname="com.inspur.digester.test.dto.Root" />
</pattern>
<pattern value="root/models">
<object-create-rule classname="com.inspur.digester.test.dto.Models" />
<set-next-rule methodname="addModels" />
</pattern>
<pattern value="root/models/model">
<object-create-rule classname="com.inspur.digester.test.dto.Model" />
<set-properties-rule >
<alias attr-name="id" prop-name="id" />
<alias attr-name="name" prop-name="name" />
</set-properties-rule>
<set-next-rule methodname="addModel" />
</pattern>
<pattern value="root/models/model/book">
<object-create-rule classname="com.inspur.digester.test.dto.Book" />
<set-properties-rule >
<alias attr-name="id" prop-name="id" />
<alias attr-name="name" prop-name="name" />
</set-properties-rule>
<set-next-rule methodname="addBook" />
</pattern>
<pattern value="root/models/model/magazine">
<object-create-rule classname="com.inspur.digester.test.dto.Magazine" />
<set-properties-rule >
<alias attr-name="id" prop-name="id" />
<alias attr-name="name" prop-name="name" />
<alias attr-name="time" prop-name="time" />
</set-properties-rule>
<set-next-rule methodname="addMagazine"/>
</pattern>
</digester-rules>
7、在action内新建一Test.java。内容如下:
package com.test.digester.test.action;
import java.io.File;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import com.test.digester.test.dto.Root;
public class Test {
public static void main(String[] args) {
try {
String inputFile="src/com/test/digester/test/input/input.xml";
String rulesFile="src/com/test/digester/test/config/config.xml";
File input = new File(inputFile);
File rules = new File(rulesFile);
Digester digester = DigesterLoader.createDigester(rules.toURL());
Root root = (Root) digester.parse(input);
System.out.println(root.toString());
} catch (Exception exc) {
exc.printStackTrace();
}
}
}
分享到:
相关推荐
本文将深入探讨如何使用Digester解析XML文件,以及在实际项目中如何应用。 首先,让我们了解什么是Apache Commons Digester。这是一个Java库,它的主要功能是读取XML文件,并基于一系列预先定义的规则(Rule),...
4. **解析XML文件**:使用Digester解析XML文件,并根据定义的规则创建Java对象。 #### 五、总结 通过上述介绍可以看出,Digester是一个非常有用的工具,它可以大大简化XML解析的过程。在实际开发中,尤其是处理...
标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...
这个"digester解析XML文件实例"是一个很好的学习资源,帮助开发者理解如何在实际项目中运用Digester。 首先,我们要了解Digester的基本工作原理。Digester通过定义一系列规则(Rules),当解析到XML文档中特定的...
3. **解析 XML**:创建好 Digester 实例后,使用 `parse` 方法读取 XML 文件并执行预定义的规则。代码示例如下: ```java Digester digester = new Digester(); digester.setValidating(false); // 关闭验证,...
3. **解析XML**:使用 Digester 的 `parse()` 方法读取XML文件,根据预先定义的规则进行处理。 4. **结果处理**:最后,Digester会生成一个对象模型,代表了XML文档的内容。 以下是一个简单的 Digester 使用示例: ...
要使用Digester解析XML文档,首先需要创建一个 `org.apache.commons.digester.Digester` 类的实例,并配置必要的模式和规则,最后调用 `parse()` 方法。 以下是一个简单的示例代码: ```java import org.apache....
5. **解析XML**:最后,使用配置好的 Digester 对象解析XML文件: ```java Root root = null; try (InputStream is = new FileInputStream("path_to_xml_file.xml")) { root = digester.parse(is); } catch ...
这个“digester解析xml必备包.rar”包含了三个关键的jar包,它们是实现Digester功能所必需的。 1. **commons-logging-1.2.jar**:这是Apache Commons Logging库的版本1.2。它提供了一个抽象层,允许开发者使用多种...
这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上。下面将详细介绍这个库的功能、使用方法以及在实际开发中的应用。 1. **...
在示例代码中, DigesterDriver演示了如何配置 Digester来解析XML文件,创建`Catalog`对象并填充其`Book`和`Magazine`子对象,以及相关的`Article`对象。每个元素的属性通过`addBeanPropertySetter()`设置,而对象...
在Java开发中,Struts框架提供了一个强大的工具——Digester,用于解析XML文件并自动创建、配置Java对象。本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来...
本篇文章将详细介绍如何使用`Digester`解析XML,以及在使用过程中需要的依赖库。 首先,`Digester`的核心功能是通过定义规则来将XML元素与Java对象的属性或方法关联,这样在解析XML时,可以自动创建和填充Java对象...
《digester解析XML详解》 在Java开发中,XML作为一种数据交换格式,广泛应用于配置文件、数据传输等场景。为了方便地将XML文档解析为Java对象,Apache组织提供了一个名为Digester的工具库,它允许开发者通过规则来...
Java中的Digester库是Apache Commons项目的一部分,它提供了一种方便的方式来解析XML文档,并将解析结果映射到Java对象模型上。这个库特别适合于创建简单的XML到Java对象的映射,而不需要编写大量的手动解析代码。在...
**使用Digester解析XML并验证** 1. **设置 Digester 规则** 在使用Digester之前,我们需要定义一系列规则,告诉Digester在遇到XML文档的哪些元素时执行什么操作。这些规则通常涉及到创建新对象、设置对象属性或者...
本文将深入探讨如何通过接口和Digester类来解析XML文件,创建并填充Java对象。 首先,理解 Digester 类的工作原理是至关重要的。Digester 是一个规则驱动的XML解析器,它通过匹配XML文档中的模式(Pattern),执行...