Я пытаюсь найти самый крутой способ анализа данных датчика с смартфона для приложения в реальном времени. Формат выглядит следующим образом:Самый быстрый способ разобрать 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>
Доступные данные датчика могут меняться в зависимости от телефона. Но как только соединение будет установлено, структура пакетов не изменится, поэтому, возможно, части анализа могут быть пропущены.
Общее предложение - в зависимости от того, как быстро ваши ввода/вывода (вы извлекаете данные по медленному соединению?) и насколько большой файл может иметь смысл анализировать данные по мере их передачи, то есть использовать синтаксический анализатор SAX и подавать его e куски разметки по мере ее получения. –
Многие ключевые соображения при выборе парсера касаются эффективности памяти, а не эффективности времени. Ваш вопрос не говорит об этом, и принятый ответ говорит только о решениях типа DOM, которые по своей сути несколько неэффективны в работе с памятью. –
@FrerichRaabe, ... парсер, реализующий API SAX, был старой моделью для потоковой передачи, но в настоящее время я действительно собираюсь с lxml.iterparse - все еще быстро и эффективно с точки зрения памяти, но гораздо менее болезненным для работы. –