当前位置: 首页 > 面试题库 >

什么时候应该选择SAX而不是StAX?

邢硕
2023-03-14
问题内容

流式XML解析器(例如SAX和StAX)比构建像DOM解析器之类的树结构的解析器更快,内存效率更高。SAX是推送分析器,这意味着它是观察者模式(也称为侦听器模式)的实例。SAX首先出现,然后是StAX-
拉式解析器,这意味着它基本上像迭代器一样工作。

您可以找到在任何地方都偏爱StAX而不是SAX的原因,但是通常可以归结为:“更易于使用”。

在JAXP上的Java教程中,StAX被模糊地呈现为DOM和SAX之间的中间部分:“它比SAX更容易,并且比DOM更有效”。但是,我从来没有发现StAX比SAX慢或低内存效率的任何线索。

这一切使我感到奇怪: 是否有任何理由选择SAX而不是StAX?


问题答案:

概括地说,我认为StAX可以和一样高效SAX。借助改进的StAXI的设计SAX,除非使用旧版代码,否则我无法真正找到首选解析的情况。

编辑 :根据此博客,Java SAX与StAX不 StAX提供模式验证。



 类似资料:
  • 抱歉,如果这是一个天真的问题,但我已经看了谷歌员工的一系列谈话,仍然不明白为什么我会使用AE而不是CF? 如果我理解正确的话,这两种服务的整体概念都是构建“微服务架构”。 CF和AE都是无状态的 两者都应该在有限的时间内执行 两者都可以与dbs和其他gcp api交互。 然而,AE必须封装到自己的服务器中。基本上,它在与CF相同的功能基础上利用了许多复杂性。那么,我应该什么时候使用它来代替CF呢?

  • 问题内容: 在本文中, Nick Coghlan讨论了PEP 435类型的 一些设计决策,以及如何将其子类化以提供不同的体验。 但是,我给出的建议(我是stdlib的主要作者)关于使用元类的建议是,在没有充分好的理由的情况下不应该这样做- 例如,无法使用类装饰器或专用工具来完成所需的工作隐藏任何丑陋的功能;而在我自己的工作,我已经能够做到我需要什么简单的使用,在创建时,和/或正常类/实例方法类:

  • 问题内容: 我是一名C ++程序员,偶尔使用MySQL处理数据库,但是我的SQL知识非常有限。但是,我当然愿意改变这一点。 目前,我正尝试仅通过SQL查询对数据库中的数据进行分析(!)。但是我将放弃,而是将数据导入C 并使用C 代码进行分析。 我已经与同事讨论了这一点,他们也促使我使用C ++,他说SQL并不是用于复杂的分析,而是主要用于导入(从现有表中)和导出(到新表中)数据,还有更多内容。例如

  • 我看到越来越多的软件组织在其面向服务的架构中使用gRPC,但人们也仍然在使用REST。在什么用例中使用gRPC是有意义的,什么时候使用REST进行服务间通信是有意义的? 有趣的是,我遇到过同时使用REST和GRPC的开源项目。例如,Kubernetes和Docker Swarm都在某种程度上使用gRPC来进行集群协调,但也公开了REST API来与主/主节点进行接口。为什么不上下使用gRPC?

  • 问题内容: 编码要发送到Web服务器的查询字符串时-您何时使用以及何时使用或: 使用转义: 要么 使用encodeURI()/ encodeURIComponent() 问题答案: escape() 不要使用它! 在B.2.1.2节中定义了转义,并且附件B的引言中指出: …本附件中指定的所有语言功能和行为均具有一个或多个不良特征,在没有遗留用法的情况下,将从本规范中删除。… …程序员不应该使用或编

  • 问题内容: 实际上,这是一个类似的话题,几乎没有实用价值。据我了解,原语性能更好,除需要与对象相关的功能(例如检查)外,应在所有地方使用。对? 问题答案: 别忘了,由于为每次装箱而创建一个新的包装程序都是非常昂贵的,尤其是考虑到通常在一种方法的单个作用域中使用它,因此自动装箱将使用一组通用包装程序。 这实际上是flyweight设计模式的一种实现。当对一个众所周知的值进行装箱时,而不是创建一个新的