您的位置:首页 > 运维架构 > Apache

使用Apache的Digester来解析XML文档

2014-07-09 10:32 411 查看
当前用的Digester1.8 需要三个jar commons-digester-1.8.jar,commons-beanutils.jar,commons-logging-1.0.4.jar http://download.csdn.net/detail/wangjinwei6912/7610565
下面上代码
package com.wckj.model;

public class Area {
private int id;
private String name;
private String areaType;
private int parentId;
private int ordering;
private String zip;

private String phoneArea;

public int getOrdering() {
return ordering;
}

public void setOrdering(int ordering) {
this.ordering = ordering;
}

public String getAreaType() {
return areaType;
}

public void setAreaType(String areaType) {
this.areaType = areaType;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

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

public int getParentId() {
return parentId;
}

public void setParentId(int parentId) {
this.parentId = parentId;
}

public String getZip() {
return zip;
}

public void setZip(String zip) {
this.zip = zip;
}

public String getPhoneArea() {
return phoneArea;
}

public void setPhoneArea(String phoneArea) {
this.phoneArea = phoneArea;
}

}
</pre><pre code_snippet_id="422952" snippet_file_name="blog_20140709_6_5225838" name="code" class="java"><pre name="code" class="java">package com.wckj.entity;

import java.util.ArrayList;
import java.util.List;

import com.wckj.model.Area;

public class ViewCache {
private List<Area> areaList = new ArrayList<Area>();

public List<Area> getAreaList() {
return areaList;
}

public void setAreaList(List<Area> areaList) {
this.areaList = areaList;
}

// 供Digester调用的方法
public void addArea(Area area) {
this.areaList.add(area);
}

}


package com.wckj.entity;

import java.io.ByteArrayInputStream;
import java.io.IOException;

import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;

import com.wckj.model.Area;

public class AreaDigester {
public ViewCache digester(String xml) throws Exception {
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("viewcache/areas", ViewCache.class);
// 指明匹配模式和要创建的类
digester.addObjectCreate("viewcache/areas/area", Area.class);
// 设置对象属性,与xml文件对应,不设置则是默认
digester.addBeanPropertySetter("viewcache/areas/area/id", "id");
digester.addBeanPropertySetter("viewcache/areas/area/parentId",
"parentId");
digester.addBeanPropertySetter("viewcache/areas/area/name", "name");
digester.addBeanPropertySetter("viewcache/areas/area/areaType",
"areaType");
digester.addBeanPropertySetter("viewcache/areas/area/ordering",
"ordering");
digester.addBeanPropertySetter("viewcache/areas/area/zip", "zip");
digester.addBeanPropertySetter("viewcache/areas/area/phoneArea",
"phoneArea");
// 当移动到下一个标签中时的动作
digester.addSetNext("viewcache/areas/area", "addArea");

ViewCache vc = null;
try {
//			vc = (ViewCache) digester.parse(new File("e:\\viewcache.xml"));
vc = (ViewCache) digester.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
} catch (IOException e) {
throw new Exception(e);
} catch (SAXException e) {
throw new Exception(e);
}
return vc;
}

public static void main(String[] args) throws Exception {
AreaDigester d = new AreaDigester();
//		ViewCache v = d.digester();
String xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>".concat("<viewcache>	<areas><area><id>1098</id><parentId>1001</parentId><areaType>province</areaType><name>北京</name><ordering>1867</ordering></area></areas></viewcache>");
ViewCache v = d.digester(xml);
System.out.println(v);
}
}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: