Perl中XML处理的全面指南
1. XML::Parser的相关问题
在使用XML::Parser时,Expat虽然是非验证性的,但它仍会检查文档的基本布局,以确保文档格式良好。不过,这也意味着文档基本结构中的任何错误都会引发异常。捕获这种异常的唯一方法是将解析器调用嵌入到 eval() 中,幸运的是,再次调用解析器可以从最后一个错误位置之后继续解析。
Expat会提供XML文档中的所有数据,这些数据通过为XML::Parser定义的触发函数返回。处理字符数据的函数需要对普通文本之外的字符做出处理决策,因为Expat会提供换行符、空格等使XML文档更易读的字符。
此外,Expat返回的数据是UTF - 8格式的字符串。对于大多数英文文档来说,这不是问题,因为UTF - 8和Latin - 1字符集的前256个字符是相同的。对于其他Unicode字符串,特别是Latin - 1集不支持的外语,可以使用Unicode::String进行处理。
由于Expat处理的数据是分块的,传递给数据处理函数的数据部分可能不完整。如果要单独处理这些数据部分,需要缓存信息并启动一个单独的处理程序来处理完整的数据部分。
2. 使用SAX进行XML处理
许多Perl中的XML解析器支持简单API for XML(SAX)接口,以便在读取文档时不同的XML处理器之间进行通信。SAX解析器的工作方式与XML::Parser基本相同,在解析文档并发现不同元素时,会调用一个函数来处理该实体。
有多种SAX解析器可供选择,其中最好的可能是XML::Parser::PerlSAX(PerlSAX)模块
超级会员免费看
订阅专栏 解锁全文
54

被折叠的 条评论
为什么被折叠?



