滚动自己的XML解析器/ XML解析算法?

时间:2009-12-16 20:26:25

标签: xml parsing

所以,作为一个有趣的项目,我决定编写自己的XML解析器。不,不解析特定文档,不,不使用XML解析器库。我的意思是编写代码以将任何XML文档解析为可用的数据结构。只是因为我喜欢挑战。 : - )

据说,到目前为止它被证明是......有趣的。它最初看起来并不容易解析(特别是当你开始考虑特殊字符,CDATA,空标签,评论等)时。

在任何人都知道的地方,是否有任何记录良好的XML解析算法或解释?看起来有各种各样的Queue和Stack以及BTree等等实现,但我不确定我是否曾经见过一个简单,记录良好的XML解析器算法......

我重申:正在寻找预先构建的解析器库!我正在寻找有关如何创建自己的预构建解析器库的信息!不要告诉我“使用expat”或“使用SAX”或其他什么。那不是我要求的。

4 个答案:

答案 0 :(得分:17)

Antlr提供了解析XML的tutorial。它将过程分解为阶段:lexing,解析,树解析等。看起来非常有趣。

答案 1 :(得分:2)

我不知道你的书中是否会“作弊”,但你可以尝试用一个现成的通用语言解析器(如ANTLR)解析你的XML。结果将是一个令牌列表(如果你只是使用词法分析器)或一个解析树(如果你包括解析器),然后你可以将解析树几乎1:1重新构建成XML结构。

也许。我没有想过XML可能与编程语言之类的“普通”ANTLR饲料有什么不同,以及你是否能够定义合适的语法。

答案 2 :(得分:-7)

VTD-XML可能是最简单的解析技术......

答案 3 :(得分:-10)

<强> http://expat.sourceforge.net/

Expat是一个用C编写的XML解析器库。它是一个面向流的解析器,其中一个应用程序为解析器可能在XML文档中找到的东西(如开始标记)注册处理程序。有关使用Expat的介绍性文章可在xml.com上找到。