如何使用 Perl 的 XML::Twig 解析不完整的 XML 片段?
我正在尝试从 XML 格式的日志文件中提取数据。由于这些数据很大,我使用 XML::Twig 从 由于这些是来自 STDIN 的串联数据,因此 XML 的格式远非
良好。解析器经常因错误而停止。如何让 XML 解析器忽略错误并仅提取我感兴趣的标签?我是否必须退回到正则表达式解析(开始标记 - 结束标记)?
I'm trying to extract data from log files in XML format. As these are huge, I am using XML::Twig to extract the relevant data from a buffer instead of the whole file(s)
As these are concatenaded data from STDIN, the XML is far from well formed. So frequently the parser stops with an error. How can I get the XML parser to ignore the errors and only extract the tags I am interested in? Do I have to fall back to regular expression parsing (start-tag - end-tag)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,我只是累积
标记之间的数据,然后解析该字符串,假设每条消息的内容都很小:输出:
I would actually just accumulate the data between
<message></message>
tags and then parse that string, assuming the content of each message is small:Output:
我最终得到了一个双重解决方案,其中我编写了一个简单的解析器例程,可以提取多行
元素,并将这些格式良好的片段通过管道传输到另一个例程,在该例程中我使用 Perl XML 库来提取数据。I ended up with a dual solution where I wrote a simple parser routine that could extract multiline
<message>
elements, and piped these well-formed fragments to another routine where I used Perl XML libraries to extract data.