首页 > 代码库 > Digester组件
Digester组件
刚认识Digester,记录一下:
Digester随着Struts的发展以及其的公用性而被提到commons中独自立项,是apache的一个组件 apache commons-digester.jar,通过它可以很方便的从xml文件生成java对象.你不用再象以前通过jdom或者Xerces去读取一个document对象.(jdom和Xerces仍然有它们的用武之地及强大之处,在其它应用里你也少不了它们)
工作原理如下: Digester底层采用SAX(Simple API for XML)析XML文件,所以对象转换由"事件"驱动,在遍历每个节点时,检查是否有匹配模式,如果有,则执行规则定义的操作,比如创建特定的Java对象,或调用特定对象的方法等。此处的XML元素根据匹配模式(matching pattern)识别,而相关操作由规则(rule)定义。
Test.xml文件
<identity> <ldap> <name>hao123</name> <url>https://www.hao123.com/</url> </ldap></identity>
Identity 类
private String name; private String url; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; }
提取xml数据,赋值给Test类
InputStream is = IdentityUtil.class.getResourceAsStream("/test.xml");//读取xml文件Identity id = new Identity();//将xml文件的数据添加到对象中Digester d = new Digester();d.push(id);d.addCallMethod("identity/ldap/name","setName",0);d.addCallMethod("identity/ldap/url","setUrl",0);d.parse(is);
我们可以看到,使用Digester的代码变得相当简洁,而要付出的代价就是为装载逻辑写一个配置文件。
除了Digester之外,当然还有其它的方法来实现Java对象的绑定与装载:
1.java.util.Properties,简单的配置属性(比如数据库连接信息),可以写在properties文件中,调用Properties对象的load(InputStream)方法将配置中的健值对加载到Properties对象中。这种方式一般仅适用于简单的配置信息的加载。
2.JAXB,Java Architecture for XML Binding,在Java Web Services Developer Pack V 1.1中提供了一个参考实现。使用这种方式时,除了提供数据源XML文件之外,还必须提供相应的Schema文件。加载前,首先用Binding Compiler将Schema转换得到目标Java类的接口与实现,然后再调用Unmarshaller或Marshaller将数据源XML文件信息加载到Java对象中,或将设置的Java对象数据导出为XML文件。
3.XPath
4.JaxMe
Digester组件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。