我试图读取大XML文件和我想做在块vs XmlDocument's的方式阅读整个文件成的存储器。我知道我可以使用 XmlTextReader 要做到这一点,但我想知道如果有人使用萨克斯。净?我知道Java发誓,我不知道如果这是值得给它的一个尝试,如果是这样的好处是什么使用它。我正在寻找具体情况。

有帮助吗?

解决方案

如果您正在讨论 SAX for .NET ,则该项目似乎无法维护。最后一个版本是2年多前发布的。也许他们在最后一个版本中得到了完美,但我不会赌它。作者Karl Waclawek似乎已经从网上消失了。

Java下的SAX?你打赌,这很棒。遗憾的是,SAX从未作为标准开发,因此所有非Java端口都根据自己的需要调整了Java API。虽然DOM是一个非常糟糕的API,但它具有针对多种语言和环境而设计的优势,因此可以很容易地在Java,C#,JavaScript,C等中实现。

其他提示

如果你只是想得到这份工作很快完成,XmlTextReader存在为此目(。网)。

如果你想要了解一个事实上的标准(和其他可能的编程语言),是稳定的,并且将强迫你代码非常有效地和优雅,但这也是非常灵活,然后看看萨克斯。 然而,不要浪费你的时间,除非你会创造非常深奥的XML分析程序.相反,寻找分析程序,下一代的分析程序(如XmlTextReader)为你的特别是平台。

SAX资源
SAX最初编写的Java,你可以找到原始开源项目,该项目已经稳定,几年来,在这里:http://sax.sourceforge.net/

有一个C#口的相同的项目(与HTML文档的一部分源下载);它也是稳定的:http://saxdotnet.sourceforge.net/

如果你不喜欢C#执行情况,你总是可以诉诸引用COM Dll通过COMInterop使用MSXML3或后来: http://msdn.microsoft.com/en-us/library/ms994343.aspx

文章,来自Java世界,但这可能说明的概念,你需要是成功的这种方法(也有可能下载Java源代码,可能证明有用并且可以很容易转换为C#):

这将是一个繁琐的执行情况。我只用萨克斯回到我的pre-.NET 天,但它需要一些非常先进的编码技术。 在这一点上,它是不值得的麻烦。

有趣的概念混合分析器
这个线程中描述的一种混合分析器,其使用。净XmlTextReader实现分析,提供了一个组合DOM和萨克斯风的好处...
http://bytes.com/groups/net-xml/178403-xmltextreader-versus-dom

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

  1. SAX是“推”。 XmlReader是一个拉解析器,具有一些好处
  2. 依赖第三方库而不是使用标准.NET API。

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

由于SAX是基于事件的,因此您将无法执行任何会导致解析器提前搜索的操作。

我个人的感觉是,微软已经发明了XmlReader对推/拉模型的解释更好的概念,但我并没有真正购买它。所以微软认为你不需要用XmlReader创建一个状态机,这对我来说没有意义,但无论如何,这只是我的看法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top