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