Använda XML på Raspberry Pi med Python (3 / 3 steg)
Steg 3: Ett XML-program i Python
Ansökan - RasPiConnect (www.milocreek.com)
Vad är XML som används för i detta program?
XML används för tre syften i detta program. 1) för kommunikationskanalen (över HTTP) från App Raspberry Pi. 2) för kommunikationskanalen från Raspberry Pi App (över HTTP) och 3) för långlivade program och skärmen konfiguration lagring i App.
De kanaler
Klienten kommunicerar med servern genom att skicka och ta emot HTTP. Mål C-kod på Apple iOS-enhet för sändning och mottagning är utanför ramen för denna artikel. Python kod på servern för att ta emot och skicka XML-kod är mycket rättfram. I servern använder vi web.py biblioteket från webpy.org. Detta är en låg vikt webserver program lätt tillgänglig genom att köra följande kommando på din Raspberry Pi.
sudo lämplig-få installera python-webpy
Det är en dubbelriktad kommunikation mellan servern och klienten. Båda riktningarna hanteras av HTTP-förfrågningar. Klienten skickar en begäran data och åtgärder med alla förfrågningar grupperade tillsammans. Den XML som skickas från klienten till servern ser ut så här:
< XMLObjectXMLRequests >
< XMLCOMMAND >
< OBJECTSERVERID > LT-1 < / OBJECTSERVERID >
< OBJEKTNAMN > CPU Text och etikett
< / OBJEKTNAMN >
< OBJEKTTYP > 1 < / OBJECTTYPE >
...
< / XMLCOMMAND >
...
< / XMLCOMMAND >
< / XMLObjectXMLRequests >
Detta XML-filen innehåller flera förfrågningar till servern för att hämta information och åtgärd begäranden skickas till servern. Observera de flera entiteterna i strukturen.
Återkommande XML från klienten ser mycket lik.
< XMLRESPONSES >
< XMLCOMMAND >
...
< / XMLCOMMAND >
< XMLCOMMAND >
< OBJECTSERVERID > LT-1 < / OBJECTSERVERID >
< svar >
<! [CDATA [43.31, 43.31, CPU Temp (deg
C)]] >
...
< / XMLCOMMAND >
< / XMLRESPONSES >
Parsning av XML
Analysera detta XML-in i de enskilda enheterna (ovan), är en enkel användning av ElementTree Python biblioteket som visats tidigare i del två av denna artikel. När ansökningarna har tolkats och validerade, kör servern begäran en i taget, samtidigt som man bygger en ny XML-struktur som innehåller Svaren på kommandon. Struktur skickas sedan till klienten med hjälp av en HTTP-anslutning i stället för flera anslutningar.
...
klass RasPi:
def POST(self):
Web.header ("Content-Type",
"text/html")
incomingXML = web.data()
rot = ET.fromstring(incomingXML)
# iterera genom alla värden
för element i
root.findAll('XMLCOMMAND'):
...
Bygga XML Skicka till klienten
Bygga XML skickas tillbaka via HTTP-begäran från klienten till servern görs genom att bygga en sträng av sammanlänkade XML-kommandon och sedan återvänder strängen som en del av web.py POST HTTP-begäran.
# börja med att bygga XML-Svaren
outgoingData = "< XMLRESPONSES >"
...
outgoingData += "< XMLCOMMAND >"
...
outgoingData += "< / OBJECTTYPE >"
outgoingData += "< OBJECTID >"
outgoingData += "%i" % objectID
outgoingData += "< / OBJECTID >"
# gjort med ögla för
outgoingData += "< / XMLRESPONSES >"
återgå outgoingData
Ta emot och skicka XML
I web.py, den inkommande XML placeras i en sträng som ovan och sedan analyseras. Svaren skickas tillbaka till klienten från funktionen POST genom att returnera en sträng.
Slutsats
XML är ett mycket användbart medel för att lagra och överföra data över olika datorsystem. Det kan användas av både stora och små datorer. Läs mer om hur du använder XML på en Python baserad plattform prova följande webbplatser:
http://docs.python.org/2/Library/XML.etree.elementtree.html
http://Eli.thegreenplace.net/201 2/03/1 5/bearbetning-xml-i-python-med-elementtree
och en handledning video på elementtree: http://www.youtube.com/watch?v=LNYoFo1 sdwg
Ytterligare XML-information, cool projekt och bloggar på www.switchdoc.com