【发布时间】:2010-03-10 07:11:21
【问题描述】:
给定
<field name="frame.time_delta_displayed" showname="Time delta from previous displayed frame: 0.000008000 seconds" size="0" pos="0" show="0.000008000"/>
<field name="frame.time_relative" showname="Time since reference or first frame: 0.000008000 seconds" size="0" pos="0" show="0.000008000"/>
<field name="frame.number" showname="Frame Number: 2" size="0" pos="0" show="2"/>
<field name="frame.pkt_len" showname="Packet Length: 1506 bytes" hide="yes" size="0" pos="0" show="1506"/>
<field name="frame.len" showname="Frame Length: 1506 bytes" size="0" pos="0" show="1506"/>
<field name="frame.cap_len" showname="Capture Length: 1506 bytes" size="0" pos="0" show="1506"/>
<field name="frame.marked" showname="Frame is marked: False" size="0" pos="0" show="0"/>
<field name="frame.protocols" showname="Protocols in frame: eth:ip:tcp:http:data" size="0" pos="0" show="eth:ip:tcp:http:data"/>
如何在不遍历每个标签并检查属性的情况下立即获取 name="frame.len" 的字段?
【问题讨论】:
-
添加到这个问题,xml是300mb。上次我尝试解析它时内存不足。有更好的萨克斯风格库的建议吗?
-
嗯,
xml.dom.minidom是一个 DOM 解析器,需要将整个文档读入内存。不是因为它不够好,而是因为 DOM 解析器就是这样做的。所以我不知道你所说的“更好的萨克斯风格库”是什么意思。xml.sax这个 Python 自带的标准 SAX 解析器有什么不好? -
在 5000 个数据包 (300mb) 之后,尝试加载 xml 会使我的计算机崩溃。在这 300mb 的数据中,我只需要大约 10kb 分布在整个文档中。有没有比lxml更高效的xml遍历方式和比sax更简单的库?