首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的SAX与XmlTextReader - SAX

C#中的SAX与XmlTextReader - SAX
EN

Stack Overflow用户
提问于 2008-09-24 15:26:44
回答 3查看 13K关注 0票数 12

我正在尝试读取一个大的XML文档,我想以块的方式读取整个文件到内存中。我知道我可以使用XmlTextReader来做这件事,但是我想知道是否有人在.NET中使用过SAX ?我知道Java开发人员对它信以为真,我想知道它是否值得一试,如果值得的话,使用它有什么好处。我正在寻找细节。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-24 15:58:09

如果你谈论的是SAX for .NET,那么这个项目似乎并没有得到维护。上一次发布是在两年多以前。也许他们在上一次发布时做得很完美,但我不敢打赌。作者Karl Waclawek似乎已经从网上消失了。

至于Java下的SAX?当然了,这太棒了。不幸的是,SAX从来不是作为标准开发的,所以所有的非Java端口都在采用Java API来满足自己的需求。虽然DOM是一个非常糟糕的应用编程接口,但它的优势在于它是为多种语言和环境设计的,所以很容易用Java、C#、JavaScript、C等语言实现。

票数 8
EN

Stack Overflow用户

发布于 2008-09-24 23:16:23

我认为使用SAX没有好处,至少有两个原因:

  1. SAX是一个“推式”模型,而XmlReader是一个拉式解析器,它让a number of benefits.
  2. Being依赖于第三方库,而不是使用标准的.NET应用编程接口。
票数 5
EN

Stack Overflow用户

发布于 2009-08-13 10:31:24

就我个人而言,我更喜欢SAX模型,因为XmlReader有一些非常恼人的陷阱,这些陷阱可能会导致代码中出现bug,从而导致代码跳过元素。大多数代码都是围绕while(rdr.Read())模型构建的,但是如果在该循环中有任何"ReadString“或"ReadInnerXml()”,您会发现自己在下一次迭代中跳过了元素。

因为SAX是基于事件的,所以这永远不会发生,因为您不能执行任何会导致解析器提前查找的操作。

我个人的感觉是,微软通过对推拉模型的解释,发明了XmlReader更好的概念,但我并不真的相信它。所以微软认为你不需要用XmlReader创建状态机,这对我来说没有意义,但不管怎样,这只是我的观点。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/127869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档