使用Struts Digester来解析XML文件
2005-06-03 15:12
796 查看
主题:使用Struts Digester来解析XML文件
作者:蔡毅
时间:2005-5-10
Apache Commons Digester用来简化xml文件处理,它依赖的组件:BeanUtils、Logging、Collections。
在内部是采用SAX来解析XML文件。
检修ABC项目中的“面包屑”处理就是使用这种方案。所谓面包屑就是在页面上起到导航作用的连接。
比如“文档类别管理-》检修管理-》标准文档类别”。这里我们使用ct-views.xml文件来存放面包屑的所
有内容。该xml文件的部分内容如下:
<views>
<page id="VSD_WI003">
<description>标准文档列表</description>
<helpurl>standarddoc/workitem/SortWorkItemList.htm</helpurl>
<crumb level="0">
<name>标准文档</name>
</crumb>
<crumb level="1">
<name>文档编制</name>
<url>/standarddoc/WorkItemIndexAction.do</url>
<target>mainWorkFrame</target>
</crumb>
<crumb level="2">
<name>文档列表</name>
</crumb>
</page>
</views>
我们定义了三个普通的JAVABEAN,从范围的大到小依次是ViewConfig,PageConfig,CrumbConfig。
他们包含自己的setter和getter。view中存放page,page里存放crumb。在系统加载的时候一次读到stack
里。
用来解析xml的类为ParseViewConfig,作用是解析ct-views里的内容,缓冲到stack中。
内容如下:
public class ParseViewConfig {
Digester digester = new Digester();
Logger logger = Toolkit.getInstance().getLogger(this.getClass().getName());
public ViewConfig parse(InputStream input) {
ViewConfig config = null;
//不进行XML与相应的DTD的合法性验证
digester.setValidating(false);
//当遇到<views>时创建一个ViewConfig对象
digester.addObjectCreate("views", ViewConfig.class);
//当遇到<page>时创建一个PageConfig对象
digester.addObjectCreate("views/page", PageConfig.class);
//设置attribute
digester.addSetProperties("views/page", "id", "id");
digester.addSetProperties("views/page", "file", "file");
digester.addSetProperties("views/page", "path", "path");
//设置bean property
digester.addBeanPropertySetter("views/page/description", "description");
digester.addBeanPropertySetter("views/page/helpurl", "helpurl");
//当遇到<crumb>时创建一个CrumbConfig对象
digester.addObjectCreate("views/page/crumb", CrumbConfig.class);
//设置attribute
digester.addSetProperties("views/page/crumb", "level", "level");
//设置bean property
digester.addBeanPropertySetter("views/page/crumb/url", "url");
digester.addBeanPropertySetter("views/page/crumb/name", "name");
digester.addBeanPropertySetter("views/page/crumb/target", "target");
//这里的addCrumbConfig是调用父接点对象的方法名,这里是PageConfig
digester.addSetNext("views/page/crumb", "addCrumbConfig");
//这里的addPageConfig是调用父接点对象的方法名,这里是ViewConfig
digester.addSetNext("views/page", "addPageConfig");
try {
config = (ViewConfig)digester.parse(input);
} catch(SAXException ex) {
logger.error(ex.getMessage(), ex);
} catch(IOException ex) {
logger.error(ex.getMessage(), ex);
}
return config;
}
该文件返回一个ViewConfig对象的引用。接着我们使用plug-in技术使系统在加载前就载入这些信息,为
此加入了SysInitPlugIn类,它实现了org.apache.struts.action.PlugIn接口。
解析ct-views的相关代码如下:
//得到文件流
InputStream input = actionServlet.getServletContext().getResourceAsStream(
"/WEB-INF/ct-views.xml");
//解析文件
ParseViewConfig parseViewConfig = new ParseViewConfig();
ViewConfig config = parseViewConfig.parse(input);
为此,可以把这里得到的ViewConfig在页面上通过getter方法得到其相关的属性值。
作者:蔡毅
时间:2005-5-10
Apache Commons Digester用来简化xml文件处理,它依赖的组件:BeanUtils、Logging、Collections。
在内部是采用SAX来解析XML文件。
检修ABC项目中的“面包屑”处理就是使用这种方案。所谓面包屑就是在页面上起到导航作用的连接。
比如“文档类别管理-》检修管理-》标准文档类别”。这里我们使用ct-views.xml文件来存放面包屑的所
有内容。该xml文件的部分内容如下:
<views>
<page id="VSD_WI003">
<description>标准文档列表</description>
<helpurl>standarddoc/workitem/SortWorkItemList.htm</helpurl>
<crumb level="0">
<name>标准文档</name>
</crumb>
<crumb level="1">
<name>文档编制</name>
<url>/standarddoc/WorkItemIndexAction.do</url>
<target>mainWorkFrame</target>
</crumb>
<crumb level="2">
<name>文档列表</name>
</crumb>
</page>
</views>
我们定义了三个普通的JAVABEAN,从范围的大到小依次是ViewConfig,PageConfig,CrumbConfig。
他们包含自己的setter和getter。view中存放page,page里存放crumb。在系统加载的时候一次读到stack
里。
用来解析xml的类为ParseViewConfig,作用是解析ct-views里的内容,缓冲到stack中。
内容如下:
public class ParseViewConfig {
Digester digester = new Digester();
Logger logger = Toolkit.getInstance().getLogger(this.getClass().getName());
public ViewConfig parse(InputStream input) {
ViewConfig config = null;
//不进行XML与相应的DTD的合法性验证
digester.setValidating(false);
//当遇到<views>时创建一个ViewConfig对象
digester.addObjectCreate("views", ViewConfig.class);
//当遇到<page>时创建一个PageConfig对象
digester.addObjectCreate("views/page", PageConfig.class);
//设置attribute
digester.addSetProperties("views/page", "id", "id");
digester.addSetProperties("views/page", "file", "file");
digester.addSetProperties("views/page", "path", "path");
//设置bean property
digester.addBeanPropertySetter("views/page/description", "description");
digester.addBeanPropertySetter("views/page/helpurl", "helpurl");
//当遇到<crumb>时创建一个CrumbConfig对象
digester.addObjectCreate("views/page/crumb", CrumbConfig.class);
//设置attribute
digester.addSetProperties("views/page/crumb", "level", "level");
//设置bean property
digester.addBeanPropertySetter("views/page/crumb/url", "url");
digester.addBeanPropertySetter("views/page/crumb/name", "name");
digester.addBeanPropertySetter("views/page/crumb/target", "target");
//这里的addCrumbConfig是调用父接点对象的方法名,这里是PageConfig
digester.addSetNext("views/page/crumb", "addCrumbConfig");
//这里的addPageConfig是调用父接点对象的方法名,这里是ViewConfig
digester.addSetNext("views/page", "addPageConfig");
try {
config = (ViewConfig)digester.parse(input);
} catch(SAXException ex) {
logger.error(ex.getMessage(), ex);
} catch(IOException ex) {
logger.error(ex.getMessage(), ex);
}
return config;
}
该文件返回一个ViewConfig对象的引用。接着我们使用plug-in技术使系统在加载前就载入这些信息,为
此加入了SysInitPlugIn类,它实现了org.apache.struts.action.PlugIn接口。
解析ct-views的相关代码如下:
//得到文件流
InputStream input = actionServlet.getServletContext().getResourceAsStream(
"/WEB-INF/ct-views.xml");
//解析文件
ParseViewConfig parseViewConfig = new ParseViewConfig();
ViewConfig config = parseViewConfig.parse(input);
为此,可以把这里得到的ViewConfig在页面上通过getter方法得到其相关的属性值。
相关文章推荐
- 使用Struts Digester来解析XML文件
- [Java学习]使用digester 解析xml配置文件
- [Java学习]使用digester 解析xml配置文件
- 使用Digester解析XML文件和JAVA对象的映射
- 使用digester 解析xml配置文件
- 使用Digester解析XML配置文件
- tomcat之catalina使用Digester解析XML配置文件
- Android -使用DOM(文档对象模型)解析XML文件
- 【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值
- 使用python将xml文件解析成html文件
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
- 使用demo4j解析xml文件
- 使用boost库解析xml配置文件
- 使用LayaAir解析xml文件
- 使用Android源生解析xml文件
- 使用DOM解析XML的文件属性名和属性值、节点名和节点值
- 使用Digester解析XML文档示例
- Ubuntu下C语言使用libxml2库解析xml文件
- 解析XML文件之使用SAM解析器