`

Digester在项目中应用

 
阅读更多

Digester由"事件"驱动,通过调用预定义的规则操作对象栈,将XML文件转换为Java对象。

对使用者而言,Digester的核心在于匹配模式与规则(matching pattern + rule)。

其实就两点:

1、用一个XML文件定义Java对象的状态(数据源文件),

2、另一个XML文件定义装载数据源文件的装载逻辑

场景:

CRM要调用帐管的接口查帐单,由于帐管接口未定下来,或者经常变动。

所以先定义好帐单类,因为展示形式相对固定,所以可以先定义好类。

然后

		String result = external2Oss.ossRequest(param);//帐管返回的帐单字符串
		if (param.getRequestNo()==5) {
			result="<?xml version='1.0' encoding='GBK'?><oss-response>	<BillInfo billCycle='20070701_20070801' totalCharge='130.0' unpaymentCharge='130.0' thisCharge='130.0' prepayCharge='0.0' adustmentCharge='0.0' freeCharge='0.0'></BillInfo></oss-response>";
		}
		String clsName = t.getName().replaceAll("\\.", "/") + ".xml";
		URL rulesURL = t.getClassLoader().getResource(clsName);
		Digester d = DigesterLoader.createDigester(rulesURL);
		d.push(obj);
		InputStream is = new ByteArrayInputStream(result.getBytes("GBK"));
		d.parse(is);

 这样,以后改了接口的时候只要修改XML即可。

 

应用场景:

1.appframe解析defaults.xml

    at org.apache.commons.digester.Digester.parse(Digester.java:1666)
    at com.ai.appframe2.complex.xml.XMLHelper.createDefaults(XMLHelper.java:304)
    at com.ai.appframe2.complex.xml.XMLHelper.getInstance(XMLHelper.java:79)
    at com.ai.appframe2.service.ServiceFactory.<clinit>(ServiceFactory.java:27)

2.tomcat解析server.xml

catalina.java

    protected Digester createStartDigester() {
        long t1=System.currentTimeMillis();
        // Initialize the digester
        Digester digester = new Digester();
        digester.setValidating(false);
        digester.setRulesValidation(true);
        HashMap<Class, List<String>> fakeAttributes = new HashMap<Class, List<String>>();
        ArrayList<String> attrs = new ArrayList<String>();
        attrs.add("className");
        fakeAttributes.put(Object.class, attrs);
        digester.setFakeAttributes(fakeAttributes);
        digester.setClassLoader(StandardServer.class.getClassLoader());

        // Configure the actions we will be using
        digester.addObjectCreate("Server",
                                 "org.apache.catalina.core.StandardServer",
                                 "className");
        digester.addSetProperties("Server");
        digester.addSetNext("Server",
                            "setServer",
                            "org.apache.catalina.Server");

        digester.addObjectCreate("Server/GlobalNamingResources",
                                 "org.apache.catalina.deploy.NamingResources");....

 

 

分享到:
评论

相关推荐

    digester用法测试案例

    资源为Digester的xml解析应用案例,

    digester使用

    digester

    用到digester项目,直接解析存入数据库

    解析使用的xml文件在"参与者基础数据-4月.zip",sql语句就不贴了,如果是测试digester只需将dao层改一下,不要连接数据库,不同数据库创表好麻烦,如果需要存入数据库可以自行创建。

    Castor、digester实例

    Castor、digester实例 Castor、digester实例 Castor、digester实例

    Digester

    用Digester開發的一個小程序。

    Digester 实例

    首先Digester是什么,它是用来解析xml文件的的工具,是jakarta开源项目下commons的一个子项目,它能让程序员更方便的解析xml文件,而不需要了解底层的工作细节。 Digester 解析xml文件 实例。

    Digester java解析xml

    Digester java解析xml jar包

    commons-digester3-3.2-API文档-中文版.zip

    赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Jakarta-Common-Digester使用笔记

    Digester使用堆栈来保存xml节点(stack.push()方法),当该xml节点中嵌套的所有子节点解析完毕,该节点将被弹出(stack.pup()方法)。Digester最大的优点就是使用模式匹配来表示xml文件中节点之间的父子关系 。

    commons-digester3-3.2-API文档-中英对照版.zip

    赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    使用digester解析XML

    不错的解析XML的类,主要利用org.apache.commons.digester.Digester;

    digester3.2 源码

    digester3.2 源码 and digester3.2 application sample

    commons-digester-2.1.jar

    此为官网版本的commons-digester-2.1.jar maven中下载的commons-digester-2.1.jar无法使用

    Digester读取xml教程.rar

    Digester读取xml教程.rar

    digester

    digester解析xml的全套组件,分别为digester-1.8, collections-3.2, beanutils-1.7.0, logging- &lt;br&gt;1.1.1。...另外,jar &lt;br&gt;和源码已分开,如要在eclipse中查看源码,可直接attach我打包好的src.zip。

    Digester笔记

    首先Digester是什么,它是用来解析xml文件的的工具,是jakarta开源项目下commons的一个子项目,它能让程序员更方便的解析xml文件,而不需要了解底层的工作细节。 如果要使用Digester作为xml文件的解析,请到jakarta...

    Digester的XML规则文件配置

    Digester的XML规则文件配置...在Digester中提供了一个包:org.apache.commons.digester.xmlrules。这个包中的类可以从一个XML文档中读取并返回一个指定的配置信息。XML文档配置文件必须使用DTD,这是xmlrules包的一部分

    commons-digester-2.0.rar源文件及jar文件

    commons-digester-2.0.rar源文件及jar文件

    commons-digester-1.8.1-API文档-中英对照版.zip

    赠送jar包:commons-digester-1.8.1.jar; 赠送原API文档:commons-digester-1.8.1-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    commons-digester.jar

    commons-digester.jar

Global site tag (gtag.js) - Google Analytics