任何人都可以指导我构建XML解析器的好教程吗?我意识到大多数语言已经有了库来完成这项任务,但我有兴趣了解XML的语法和解析器工作原理。我已经尝试过寻找能够解释这一点的东西但却找不到任何东西。
答案 0 :(得分:1)
为了说清楚,你应该从来没有尝试编写一个XML解析器用于生产。这是
为了概述XML,我建议你在O'Reilly上阅读“XML In A Nutshell”,并尝试用XML和XML转换。对于一般的解析器构建,Parsing Techniques看起来很有希望。但实际上解析XML相当困难,所以你应该从使用它获取知识开始。在该领域,文档也不那么稀疏......
答案 1 :(得分:0)
如果你是计算机科学的学生并且想要将XML解析器作为学术练习,那么很好:这是一个度过一个潮湿周末的好方法,你不需要问这个问题,因为你有权访问到一个关于如何编写解析器的教科书库,如果你有特定的XML相关问题,那么你可以随时查看各种开源解析器的代码,看看专家如何解决这个问题。
如果你不是计算机科学的学生,那么我建议你成为一个 - 如何为不同的语法类别编写解析器的理论是该主题基础的一部分。
答案 2 :(得分:0)
我认为人们没有足够的需求来编写这样的教程;正如我评论的那样,我认为一般的解析器技术并没有多大帮助。 XML解析器通常不是通常的lex + yacc方法工作得太好(lexer部分比解析器更重要,因为它的价值)。
我知道大多数生产就绪的XML解析器都是野兽,但你可能最好开始阅读它。 Java有一些例子,xmlpull可能是最简单的正确解析器之一。 Woodstox和Xerces是最兼容(“完整”)的解析器,拥有大量的代码库,所以绝对不是轻松阅读。但它们处理XML解析器应该处理的所有内容,因此它们也可能具有教育意义 但要注意半支持的假解析器,它们会跳过对XML规范要求的检查(例如Javolution检查很少的东西,例如没有字符有效性检查或属性名称重复)。
另一个要阅读的内容显然是XML规范。它是IMO最精心编写的规范之一;准确而完整,即使不完全轻松阅读。但考虑到所有内容,实际上并不是那么长。