Uso de XML en la frambuesa Pi con Python (2 / 3 paso)

Paso 2: Análisis de XML con Python

¿Qué entendemos por análisis?

Análisis se refiere al análisis sintáctico de la entrada XML en sus componentes para facilitar la ejecución código basado en el resultado del análisis. En otras palabras, el programa está "leyendo" el XML para obtener los valores que busca, prestando atención a la sintaxis correcta y la forma. Sintaxis XML incluyen una jerarquía anidada de elementos. Esto significa que cada nivel de la jerarquía está incluido como un subconjunto completamente incluido del nivel anterior. En nuestro siguiente ejemplo, cada objeto es completamente cerrado ("nested") en el. Puede ampliar esta hasta abajo como usted tiene gusto de anidación. Cuando usted escriba análisis código este anidamiento generalmente resultado de lazos en Python iteración todos los objetos en un nivel en la jerarquía.

Opciones para parsear XML en Python

Hay muchos diferentes paquetes para parsear XML en Python. Vamos a usar xml.etree.ElementTree. ElementTree es un fácil de usar, rápido biblioteca de árbol XML construido en Python. Es algo limitado en funciones, pero para XML sencillo mensaje lo análisis es difícil de superar.

¿Lo que necesita saber sobre ElementTree? Muy pocos comandos se necesitan para analizar XML simple. Estos pocos se ilustra a continuación.

Código de ejemplo de Python

 import xml.etree.ElementTree as ET 
 incomingXML = """ <XMLObjectXMLRequests> 
 <XMLCOMMAND> <OBJECTSERVERID>W-1</OBJECTSERVERID> <OBJECTNAME>StatusWebView</OBJECTNAME> <OBJECTTYPE>1</OBJECTTYPE> <OBJECTID>7</OBJECTID> 
 </XMLCOMMAND> <XMLCOMMAND> 
 <OBJECTSERVERID>M-2</OBJECTSERVERID> <OBJECTNAME>Processes</OBJECTNAME> <OBJECTTYPE>64</OBJECTTYPE> <OBJECTID>0</OBJECTID> 
 </XMLCOMMAND> 
 </XMLObjectXMLRequests>""" 
 root = ET.fromstring(incomingXML) print incomingXML 
 # iterate through all the values for element in root.findall('XMLCOMMAND'): 
 print 'XMLCOMMAND' print 'OBJECTNAME:',\ 
 element.find('OBJECTNAME').text print 'OBJECTTYPE:',\ 
 element.find('OBJECTTYPE').text print 'OBJECTSERVERID:',\ 
 element.find('OBJECTSERVERID').text print 'OBJECTID:',\ 
 element.find('OBJECTID').text 

Configurar los datos ElementTree

Después de la importación del código ElementTree y escribir el XML en una cadena (Nota: usted podría estar leyendo esto desde un archivo o una petición web), hemos creado primero la raíz de la jerarquía XML. Es la raíz de este código XML.

Recorra en iteración la lista

Sabemos buscar en el archivo XML, que consta de una serie de objetos. Usamos un bucle hacerlo (cada elemento dentro de la raíz es un objeto) usando el ElementTree comando findall (encontrar todos los objetos XMLCOMMAND en este caso).

Analizar los elementos individuales

En el interior del bucle, ahora analizar los elementos individuales del objeto. Aquí utilizamos el comando de elemento ElementTree con el atributo de texto. Tenga en cuenta que los elementos no están en el mismo orden! XML no importa si los elementos en el mismo nivel están en ningún orden en particular. Además, no se garantiza que el primer elemento será el primero obtenido por ElementTree.

Elementos que pueden ser faltantes de objetos. En el caso de elementos que faltan en Python (usando ElementTree) es absolutamente necesario utilizar un if instrucción para lidiar con el elemento que falta. Si usted

no entonces corres el riesgo que causa una excepción Python cuando opere en el valor devuelto como ElementTree devuelve un ninguno y no un valor válido. Si está utilizando cadenas como valores, probablemente tendrá que establecer la variable de cadena un "" (cadena vacía) en lugar de lo que le permite ajustarse a una Python ninguno. Esto es un error muy común en la escritura de código ElementTree.

 if (element.find('XXXX').text == None): #do something 

Usos de XML en los programas de Python

Se utiliza extensivamente en la industria del software, que van desde mensajes de HL7 en Healthcare, SOAP Simple Object Access protocolo () para el intercambio de información cliente-servidor, XML y XML incluso se utiliza en archivos de Microsoft Word. Las principales ventajas de utilizar XML son Cruz sistema de uso, legibilidad, capacidad de ampliación y la posibilidad de editar el XML en un editor de texto.

Programadores a menudo usan XML para leer y escribir archivos de configuración en el disco, exceso de velocidad de depuración y desarrollo. Esto hace más fácil de configurar conjuntos de pruebas para programas como se pueden leer las mismas estructuras XML desde el disco como te enviaria a través de Internet en una solicitud web. La expansibilidad de XML le permite añadir nuevos parámetros y estructuras en sus programas de Python, mientras que mantiene la compatibilidad hacia atrás. Parte tres de esta serie mostrará cómo se hace en Python.

Conclusión

XML es verboso y como resultado, utiliza un poco de espacio en disco para almacenar y memoria para procesar. En el mundo de frambuesa Pi y a través de Internet generalmente no importa esto. Sin embargo, en microcontroladores como el Arduino, espacio de memoria RAM es una prima, tan un protocolo más simple y "denso" como JSON es más apropiado. Si el espacio de disco es una prima, XML se comprimirá muy bien debido a la de la reproducción de palabras clave y descripciones.

XML es fácil de leer, analizar y depurar para principiantes y programadores experimentados por igual.

Artículos Relacionados

Obtener precios de Stock en frambuesa Pi (con Python)

Obtener precios de Stock en frambuesa Pi (con Python)

Estoy trabajando en algunos nuevos proyectos que implican obtener datos del precio de las acciones de la web, que se realiza un seguimiento y visualizar a través de mi frambuesa Pi. Quería compartir la configuración de cómo hacer esto usando Python.E
Programación frambuesa Pi con CODESYS

Programación frambuesa Pi con CODESYS

Hola,Este instructable es básicamente un tutorial para que usted consiga ir utilizando el entorno CODESYS para programar un Raspberry Pi.Este instructivo está dirigido no tanto a los aficionados, sino más bien incipiente ingenieros de control/automat
Construcción de robots con Python y frambuesa Pi

Construcción de robots con Python y frambuesa Pi

el objetivo de este tutorial es ayudarle a comenzar a programar con Python para controlar tus robots Arduino con un Raspberry PI. Revisaremos los aspectos básicos como instalación y algunos ejemplos simples para controlar tu robot desde una GUI de Py
Inalámbrico de temporizador de luz de Navidad con Python y frambuesa Pi

Inalámbrico de temporizador de luz de Navidad con Python y frambuesa Pi

actualización 14/01/2014: gracias a todos los que votaron por este proyecto en el concurso de Hacking de Hardware! Esperando a mi nueva pluma del fabricante.¿Actualización 31/12/2013: en busca de una versión más avanzada de este proyecto? Echale mi n
Cómo que arranque frambuesa Pi con NOOBS

Cómo que arranque frambuesa Pi con NOOBS

en caso de que no sabes, la frambuesa Pi es un ordenador de tamaño tarjeta de crédito. Originalmente fue creado para ayudar a los jóvenes a aprender a programar. Puesto que los proyectos de lanzan de esta placa pequeña ha recorrido un largo camino. H
REGISTRO frambuesa Pi con monitor de coche

REGISTRO frambuesa Pi con monitor de coche

Así que este perezoso Geek (registro antiguo) decidió comprar un Raspberry Pi. Ahora el Pi sí mismo es muy pequeña (ver foto) pero el primer problema que encontré fue que con todos los cables conectados, no es muy estable. Los cables, especialmente m
Jugar Imperial marcha de Star Wars en frambuesa Pi con zumbador piezoeléctrico

Jugar Imperial marcha de Star Wars en frambuesa Pi con zumbador piezoeléctrico

Vamos a hacer algo de ruido con Raspberry Pi y un zumbador piezoeléctrico. Este tutorial proporciona instrucciones paso a paso cómo tocar la marcha Imperial, también conocido como tema de la Dart Vader, de Star Wars en la Raspberry Pi. Por supuesto,
Leva de seguridad fácil frambuesa Pi con carga automática de la Web

Leva de seguridad fácil frambuesa Pi con carga automática de la Web

Este es un proyecto que redacté súper rápido en una semana o así. La razón por la que tenía que configurarlo de la manera que lo hizo fue obtener un sistema de seguridad básico en lugar tan pronto como sea posible para supervisar mi garaje via mi dis
Fuente de alimentación casera de frambuesa Pi con XL6009 DC-DC Boost módulo

Fuente de alimentación casera de frambuesa Pi con XL6009 DC-DC Boost módulo

Fuente de alimentación casera de frambuesa Pi con XL6009 DC-DC Boost Boost elevador potencia módulo convertidorv muy barata y ajustableDSN6009 4A es un potente elevador conmutación (BOOST) módulo actual. El módulo utiliza la segunda generación de tec
Portapapeles comunicación PC ↔ Pi con Python

Portapapeles comunicación PC ↔ Pi con Python

Yo normalmente uso mi frambuesa Pi en un escritorio compartido de windows. Comparto también una unidad de red con el Pi. Esto es genial, pero sigo teniendo la molestia del portapapeles en el PC no se refleja en la Pi. Puede haber aplicaciones de plat
Cómo empezar con python.

Cómo empezar con python.

Así que creo que a ti mismo, hombre ésos codificación dudes seguro que molan! ¿O tal vez eres un gurú de codificación y quiero aprender otro idioma para presumir en el sótano de las madres? Bien de cualquier manera has seleccionado el idioma correcto
LinkIt uno - comunicación con python

LinkIt uno - comunicación con python

Hola compañeros creadores!Nueva Junta de MediaTek, LinkIt uno ofrece gran potencial - GPS, WiFi, Bluetooth, GSM, extensibilidad con gpio, procesador fuerte y mucho más. Pero a veces necesita la comodidad de python para analizar archivos o gráficos de
Control de Arduino con python basado en web API (No php)

Control de Arduino con python basado en web API (No php)

En esta guía le mostrará cómo controlar el dispositivo arduino de una página web! Luego, te voy a mostrar cómo controlar tu arduino desde tu dispositivo móvil e incluso crear un API basado en web para controlar tu arduino desde su página web con otro
Gestión de foto digital - fotos Del débil con Python

Gestión de foto digital - fotos Del débil con Python

En los días con la película cuesta dinero cada vez que usted oprimió el botón del obturador, ahora "película" es gratuita, así que a menudo tomamos duplicados en caso de que el enfoque, el encuadre o algún otro detalle está apagado. A veces toma