StA解析ML.docVIP

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

使用StAX解析XML 2012-03-27 hehffyy 阅 301 转藏到我的图书馆微信分享: StAX概述 从一开始,Java API for XML Processing (JAXP)就提供了两种方法來处理XML:文档对象模型(DOM)方法是用标 准的对象模型表示XML文档;Simple API for XML (SAX) 7/法使用应用程序提供的唞件处理程序来处理XML。 JSR-173提出了-种而向流的新方法:Streaming API for XML (StAX)0其最终版本于2004年3 H发布,并成为了 JAXP1.4 (将包含在即将发布的Java 6中)的一部分。 如其名称所喑示的那样,StAX把重点放在滅?上。实际上,StAX与其他方法的区别就在于应用程序能够把XML作为 一个事件流來处理。将XML作力一组事件來处理的想法并不新颖(事实上SAX己经提出來了),们不同之处在于StAX 允许应用程序代码把这些事件逐个拉出來,而不用提供在解析器方便吋从解析器中接收事件的处理程序。 StAX实际上包括两袞处理XML的API,分别提供了不同程度的抽象。基于指针的API允许应用程序把XML作为 一个标记(或事件)流來处理:应用程序可以检查解析器的状态,获得解析的上一个标记的信息,然后洱处理卜一个标 记,依此类推。这是-?种低层API,尽管效率离,但是没冇提供底层XML结构的抽象。较为离级的基于迭代器的API 允许应用程序把XML作为一系列事件对象來处理,每个对象和应用程序交换XML结构的一部分。应川程序只需要确 定解析班件的类型,将其转换成对应的具体类型,然后利川其A法获得属于该求件的信息。 回页首 基本原理 力了使用这两类API,应用程序首先必须获得一个具体的XMLInputPactory。根据传统的jaxp风格,耍用到 抽象工厂模式;XMLInputFactory类提供了静态的newlnstance方法,它负责定位和实例化其体的工厂。 配罝该实例可设置定制或者预先定义好的属性(其名称在类XMLInputFactory中宛义)。最后,力了使用基于指针的 API,应用程序还要通过调用某个createXMLStreamReader方法获得一个XMLStreamReader。 如果要使川基丁祺件迭代器的APi,应川程序就要调用createXMLEventReader方法获得一 个XMLEventReader (如洁单1所示)。 清单1.获取和配置默认的XMLInputFactory // get tkc default factory \v\stav\cc XMLInputFactory he亡ory = XMLI^piAtFactoKy.^e\A/lta$ta^cc(); // configure it to create readers that coalesce 没djaee八亡 eh以亡er sections factory.setPKoperty(XMUk\piAtFactoryJ$^COALESCIN6}, 8oolcata.TRUE); XMLStre^mRe^^er r = factoKy.CKeateXMLStKcakvxReade^iiaput); // ... XMLStreamReader和XMLEventReader都允许应用程序迭代底层的xml流。两种方法的差别在 于如何公开解析后的xml infoset信息片段。XMLGtreamReade「就像一个指针,指在刚刚解析过的xml标 记的后而,并提供了方法获得更多关于该标记的信息。这种方法节约内存,因为不川创建新的对象。但足,业务应用程 序开发人员可能会发现XMLEventReade「更直观一些,凶为它实际上就廷一个标准的Java迭代器,将xml 变成丫事件对象流,毎个事件对象都封装了它所表示的特定XML结构闹有的信息。本系列的第二部分将详细讨论这种 雎于事件迭代器的API。 使用哪种风格的API取决于具体情况。和基于指针的API相比,基于求件迭代器的API具有更多的而向对象特征。 W此更便T应用于模块化的体系结构,W力当前的解析器状态反映在卞件对象屮,应用程序组件在处理赉件的时候不需 嬰访问解析器/读取器。此外,还可以使 用 XMLInputFactory 的 createXMLEventReader(XMLStreamReader)方法 从 XMLStreamReader 创逮 XMLEventReader。 StAX还定义了一?种序列化器API, Java标准XML处理支持中一直缺少的一种特性、和解析一样,也包含两种风格 的流式api:处理标记的底m XMLStreamWriter和处理事件对象的高m XMLEventWriter. X

文档评论(0)

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

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

1亿VIP精品文档

相关文档