【发布时间】:2013-09-01 16:22:41
【问题描述】:
我正在尝试找到一种最快的方法来解析来自智能手机的传感器数据以用于实时应用程序。格式如下所示:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<NodeId>0</NodeId>
<Accelerometer>
<Accelerometer1>-.1875240802764893</Accelerometer1>
<Accelerometer2>4.6734819412231445</Accelerometer2>
<Accelerometer3>8.312667846679688</Accelerometer3>
</Accelerometer>
<Gyroscope>
<Gyroscope1>-0.10551923513412476</Gyroscope1>
<Gyroscope2>0.009592439979314804</Gyroscope2>
<Gyroscope3>0.019185146316885948</Gyroscope3>
</Gyroscope>
<Gravity>
<Gravity1>-1.2976515293121338</Gravity1>
<Gravity2>3.672762393951416</Gravity2>
<Gravity3>9.003327369689941</Gravity3>
</Gravity>
<TimeStamp>1377767599250</TimeStamp>
可用的传感器数据可能会因手机而异。但是一旦建立连接,包的结构就不会改变,所以可能会跳过部分解析。
【问题讨论】:
-
一般性建议 - 取决于您的 I/O 速度(您是否通过慢速连接获取数据?)以及文件有多大,在您解析数据时可能有意义重新传输它,即使用 SAX 解析器并在接收到它时将标记块提供给它。
-
选择解析器的许多关键考虑因素都与内存效率有关,而不是时间效率。您的问题没有说明这一点,并且接受的答案仅涉及 DOM 样式的解决方案,这在本质上有些内存效率低下。
-
@FrerichRaabe, ...实现 SAX API 的解析器是流式传输的旧模型,但这些天我实际上会使用 lxml.iterparse —— 仍然快速且内存效率高,但很多使用起来不那么痛苦。
标签: python xml xml-parsing