【问题标题】:Fastest way to parse XML in Python在 Python 中解析 XML 的最快方法
【发布时间】: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


【解决方案1】:

如果解析速度是您的关键因素,请考虑使用cElementTreelxml

肯定有更多选择,请参阅以下主题:

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2011-07-05
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多