perl:如何顺序解析xml文件

我有一个 XML文件,它描述了我可以在UDP通道上交换的数据结构.
例如:
这是我的输入XML文件,描述了我的数据结构.

<ds>
 <uint32 name='a'/>
 <uint32 name='b'/>
 <string name='c'/>
 <int16 name='d'/>
 <uint32 name='e'/>
</ds>

使用perl的XML解析此XML文件:简单,允许我生成以下哈希

$VAR1 = {
          'uint32' => {
                      'e' => {},'a' => {},'b' => {}
                    },'int16' => {
                     'name' => 'd'
                   },'string' => {
                      'name' => 'c'
                    }
        };

如您所见,在解析之后,我无法弄清楚字段’e’相对于数据结构起点的相对位置.

我想找出每个元素的偏移量.

我尝试搜索perl XML解析器,它允许我按顺序解析XML文件,类似于’getnexttag()’类型的功能,但找不到任何功能.

以编程方式执行此操作的最佳方法是什么?如果不是perl,那么哪种其他语言最适合做这项工作?

解决方法

你需要使用带有适当回调的流式解析器,当涉及到更大的数据集时,这也将提高解析速度(并且如果正确完成,可以减少内存消耗),这是一个很好/很棒的事情.

我建议您使用XML :: SAX,该模块的介绍可在以下链接下找到:

> XML::SAX::Intro

为start_element提供回调,这样您就可以一次读取每个元素的值.

你能给我一个简单的例子吗?

是的,我已经拥有了!

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...