2013-08-29 56 views
3

我正在試圖從實時應用程序中解析來自智能手機的傳感器數據的qickest方式。格式如下所示:在Python中解析XML的最快方法

<?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> 

可用的傳感器數據可能會因手機而異。但是一旦建立連接,包的結構將不會改變,因此可能會跳過部分解析。

+0

一般建議 - 這取決於如何快速的I/O是(你是通過慢速連接來獲取數據嗎?)以及文件的大小,在傳輸數據時解析數據是有意義的,例如使用SAX解析器並將其提供給它當您收到它時,會有大塊的標記。 –

+0

選擇解析器的許多關鍵考慮因素都是關於內存效率,而不是時間效率。你的問題並沒有說明這一點,並且接受的答案只能說明DOM式的解決方案,這本質上有些內存效率低下。 –

+0

@FrerichRaabe,...一個實現SAX API的解析器是流式傳輸的舊模型,但我現在實際上使用lxml.iterparse - 仍然快速且高效地存儲內存,但是使用起來很不痛苦。 –

回答