如何按顺序解析 XML 文件
How to parse an XML file sequentially
我有一个 XML 文件,它描述了我可以在 UDP 通道上交换的数据结构。例如:这是我的输入 XML 文件,描述了我的数据结构。
<ds>
<uint32 name='a'/>
<uint32 name='b'/>
<string name='c'/>
<int16 name='d'/>
<uint32 name='e'/>
</ds>
解析此 XML 文件通常允许我生成以下哈希值
$VAR1 = {
'uint32' => {
'e' => {},
'a' => {},
'b' => {}
},
'int16' => {
'name' => 'd'
},
'string' => {
'name' => 'c'
}
};
如您所见,解析后我无法确定字段 'e' 相对于数据结构开头的相对位置。
我想找出每个元素的偏移量。
我尝试搜索 XML 解析器,它允许我按顺序解析 XML 文件,类似于 'getnexttag()' 类功能,但找不到任何东西。
以编程方式执行此操作的最佳方法是什么?如果不是 python,那么哪种其他语言最适合完成这项工作?
我认为 lxml.etree.iterparse
可以用在这里看例子 http://lxml.de/tutorial.html#tree-iteration
docs.python.org/2/library/xml.etree.elementtree.html 终于为我工作了。
谢谢@kenstars
我有一个 XML 文件,它描述了我可以在 UDP 通道上交换的数据结构。例如:这是我的输入 XML 文件,描述了我的数据结构。
<ds>
<uint32 name='a'/>
<uint32 name='b'/>
<string name='c'/>
<int16 name='d'/>
<uint32 name='e'/>
</ds>
解析此 XML 文件通常允许我生成以下哈希值
$VAR1 = {
'uint32' => {
'e' => {},
'a' => {},
'b' => {}
},
'int16' => {
'name' => 'd'
},
'string' => {
'name' => 'c'
}
};
如您所见,解析后我无法确定字段 'e' 相对于数据结构开头的相对位置。
我想找出每个元素的偏移量。
我尝试搜索 XML 解析器,它允许我按顺序解析 XML 文件,类似于 'getnexttag()' 类功能,但找不到任何东西。
以编程方式执行此操作的最佳方法是什么?如果不是 python,那么哪种其他语言最适合完成这项工作?
我认为 lxml.etree.iterparse
可以用在这里看例子 http://lxml.de/tutorial.html#tree-iteration
docs.python.org/2/library/xml.etree.elementtree.html 终于为我工作了。 谢谢@kenstars