2013-08-29 9 views
3

Я пытаюсь найти самый крутой способ анализа данных датчика с смартфона для приложения в реальном времени. Формат выглядит следующим образом:Самый быстрый способ разобрать XML в Python

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

Общее предложение - в зависимости от того, как быстро ваши ввода/вывода (вы извлекаете данные по медленному соединению?) и насколько большой файл может иметь смысл анализировать данные по мере их передачи, то есть использовать синтаксический анализатор SAX и подавать его e куски разметки по мере ее получения. –

+0

Многие ключевые соображения при выборе парсера касаются эффективности памяти, а не эффективности времени. Ваш вопрос не говорит об этом, и принятый ответ говорит только о решениях типа DOM, которые по своей сути несколько неэффективны в работе с памятью. –

+0

@FrerichRaabe, ... парсер, реализующий API SAX, был старой моделью для потоковой передачи, но в настоящее время я действительно собираюсь с lxml.iterparse - все еще быстро и эффективно с точки зрения памяти, но гораздо менее болезненным для работы. –

ответ

Смежные вопросы