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

Paso 3: Una aplicación de XML en Python

La solicitud - RasPiConnect (www.milocreek.com)

¿Qué es XML se utiliza para este programa?



XML se utiliza para tres propósitos en este programa. 1) para el canal de comunicaciones (sobre HTTP) desde la aplicación a la frambuesa Pi. 2) para el canal de comunicaciones de la frambuesa Pi a la aplicación (sobre HTTP) y 3) para el programa y la pantalla de configuración de almacenamiento persistente en la aplicación.

Los canales de comunicación

El cliente se comunica con el servidor de envío y recepción de HTTP. El código de C objetivo en el dispositivo iOS de Apple para enviar y recibir es más allá del alcance de este artículo. El código de Python en el servidor para recibir y enviar el código XML es muy sencillo. En el servidor que utilizamos la biblioteca web.py de webpy.org. Este es un programa de servidor Web de peso ligero disponible ejecutando el siguiente comando en la Raspberry Pi.

 sudo apt-get install python-webpy 

Hay un canal de comunicación bidireccional entre el servidor y el cliente. Ambas direcciones son manejadas por las solicitudes HTTP. El cliente envía solicitudes de datos y la acción con todas las solicitudes agrupadas. El XML enviado desde el cliente al servidor se ve así:

< XMLObjectXMLRequests > <XMLObjectXMLRequests> <XMLCOMMAND> 
 <OBJECTSERVERID>LT-1</OBJECTSERVERID> <OBJECTNAME>CPU Text and Label </OBJECTNAME> <OBJECTTYPE>1</OBJECTTYPE> 
... ... </XMLCOMMAND> 
... ... </XMLCOMMAND> 
 </XMLObjectXMLRequests> 

Este XML contiene varias solicitudes al servidor para recuperar información y envío de solicitudes de acción al servidor. Tenga en cuenta las múltiples entidades en la estructura.

El retorno XML del cliente es muy similar.

< XMLRESPONSES > <XMLRESPONSES> <XMLCOMMAND> 
... ... </XMLCOMMAND> <XMLCOMMAND> 
 <OBJECTSERVERID>LT-1</OBJECTSERVERID> <RESPONSE> 
 <![CDATA[43.31, 43.31, CPU Temp (deg C)]]> 
... ... </XMLCOMMAND> 
 </XMLRESPONSES> 

Analizar el XML

El análisis de este XML en las entidades individuales (arriba), es un simple uso de la biblioteca de ElementTree Python como se mostró anteriormente en la segunda parte de este artículo. Una vez que las solicitudes han sido analizadas y validado, el servidor ejecuta las solicitudes una a la vez, mientras que la construcción de una nueva estructura XML que contiene las respuestas a los comandos. La estructura es entonces enviada al cliente mediante una conexión HTTP en lugar de conexiones múltiples.

 ... class RasPi: 
 def POST(self): web.header('Content-Type', 
 'text/html') incomingXML = web.data() 
 root = ET.fromstring(incomingXML) # iterate through all the values for element in 
 root.findall('XMLCOMMAND'): ... 

Construir XML a enviar al cliente

Construcción de lo XML para enviar detrás a través de la solicitud HTTP desde el cliente al servidor se realiza construyendo una cadena de comandos XML concatenados y luego regresar a la cadena como parte de la solicitud de HTTP POST web.py.

 # start of building the XML responses outgoingData="<XMLRESPONSES>" 
 ... outgoingData +="<XMLCOMMAND>" 
 ... outgoingData +="</OBJECTTYPE>" outgoingData +="<OBJECTID>" outgoingData += "%i" % objectID outgoingData +="</OBJECTID>" # done with FOR loop 
 outgoingData+="</XMLRESPONSES>" return outgoingData 

Recepción y envío de lo XML

En web.py, el XML entrante se coloca en una cadena como por encima y luego analiza. Las respuestas se envían al cliente de la función POST devolviendo una cadena.

Conclusión

XML es un medio muy útil para almacenar y transmitir datos a través de sistemas informáticos dispares. Es utilizable por los equipos grandes y pequeños por igual. Para aprender más acerca de cómo utilizar XML en un Python basado en prueba de la plataforma los siguientes sitios web:

http://docs.Python.org/2/Library/XML.Etree.elementtree.html

http://Eli.thegreenplace.net/201 2/03/1 5/proceso-xml-en-python-con-elementtree

y un tutorial de vídeo sobre elementtree: sdwg http://www.youtube.com/watch?v=LNYoFo1

Más información de XML, proyectos interesantes y blogs en www.switchdoc.com

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