Digester解析XML问题.pdfVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Digester解析XML问题

Digester Digester DDiiggeesstteerr Digester 框架以模式(Pattern)和规则(Rule)为基础处理输入的XML。模 式必须与XML 元素匹配,包括其名字和在文档树内的位置。描述匹配模式的语 法类似于 XPath 匹配模式,例如:catalog 模式匹配顶层的<catalog>元素, catalog/book 模式匹配直接嵌套在<catalog>元素内的<book>元素(但不匹配文档 内其他位置的<book>元素)。 所有的模式都必须指定其完整名称——从根元素开始的完整路径。唯一的例 外是包含通配符(“*”)的模式,例如*/name 模式匹配XML 文档内任何位置的 <name>元素。但是根元素不必特别指出,因为所有的路径都是从根元素开始的 绝对路径。 当Digester 发现一个指定的模式,它就执行关联的任务。由此可见,Digester 框架显然与 SAX 解析器有着密切的关系(实际上,Digester 类实现了 org.xml.sax.ContentHandler,并维护着解析栈)。所有在Digester 中使用的规则必 须扩展 mons.digester.Rule,后者本身提供了一些类似于 SAX 的 ContentHandler 回调函数的方法。例如,当遇到匹配元素的开始标记和结束标记 时,begin()方法和end()方法将分别被调用。 一旦遇到匹配元素的内容,body()方法被调用;最后被调用的方法是finish(), 这个方法在匹配元素的结束标记处理完毕之后被调用,用来执行可能需要的事后 清理任务。然而,大多数时候我们不必关注这些方法,因为框架提供的标准规则 很可能已经提供了所有必需的功能。 要反配制一个文档,首先创建一个mons.digester.Digester 类的 实例,如果必要的话,进行一些配置操作,指定必需的模式和规则,最后向parse() 方法传递一个XML 文件的引用。下面的DigesterDriver 示范了这一处理过程(必 须在命令行上指定输入XML 文档的名称)。 Java 代码 1 import mons.digester.*; 2 import java.io.*; 3 import java.util.*; 4 5 public class DigesterDriver { 6 public static void main(String[] args) { 7 try{ 8 Digester digester =new Digester(); 9 digester.setValidating(false); 10 digester.addObjectCreate("catalog", Catalog.class); 11 digester.addObjectCreate("catalog/book", Book.class); 12 digester.addBeanPropertySetter("catalog/book/author", "author"); 13 digester.addBeanPropertySetter("catalog/book/title", "title"); 14 digester.addSetNext("catalog/book", "addBook"); 15 digester.addObjectCreate("catalog/magazine", Magazine.class); 16 digester.addBeanPropertySetter("catalog/magazine/name", "name"); 17 digester.addObjectCreate("catalog/magazine/article", Article.class); 18 digester.addSetPrope

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档