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>
可用的傳感器數據可能會因手機而異。但是一旦建立連接,包的結構將不會改變,因此可能會跳過部分解析。
一般建議 - 這取決於如何快速的I/O是(你是通過慢速連接來獲取數據嗎?)以及文件的大小,在傳輸數據時解析數據是有意義的,例如使用SAX解析器並將其提供給它當您收到它時,會有大塊的標記。 –
選擇解析器的許多關鍵考慮因素都是關於內存效率,而不是時間效率。你的問題並沒有說明這一點,並且接受的答案只能說明DOM式的解決方案,這本質上有些內存效率低下。 –
@FrerichRaabe,...一個實現SAX API的解析器是流式傳輸的舊模型,但我現在實際上使用lxml.iterparse - 仍然快速且高效地存儲內存,但是使用起來很不痛苦。 –