Använda XML på Raspberry Pi med Python (2 / 3 steg)

Steg 2: Parsing XML med Python



Vad menar vi med tolkning?

Analysen avser syntaktiska analysen av XML-indata i sina beståndsdelar för att underlätta kör kod baserat på resultatet av analysen. Med andra ord, läser programmet"" XML för att hitta värden som det är ute efter, att uppmärksamma korrekt syntax och form. XML-syntaxen innehåller en kapslad hierarki av element. Detta innebär att varje nivå i hierarkin ingår som en sluten undergrupp till tidigare nivå. I vårt exempel nedan, varje objekt är helt inbyggt ("kapslade") i den. Du kan utöka detta häckande så långt ner som du vill. När du skriver parsning kod här häckar oftast resulterar i för loopar i Python iterera genom alla objekt på en nivå i hierarkin.

Alternativ för parsning av XML i Python

Det finns många olika paket för parsning av XML i Python. Vi kommer att använda xml.etree.ElementTree. ElementTree är en enkel att använda, snabb XML-trädet bibliotek inbyggd i Python. Det är något begränsade i funktioner, men för enkel XML-meddelande parsning det är svårt att slå.

Vad behöver du veta om ElementTree? Mycket få kommandon behövs för att tolka enkla XML. Dessa par kommer att illustreras nedan.

Python exempelkod

importera xml.etree.ElementTree som ET

incomingXML = "" "
< XMLObjectXMLRequests >

< XMLCOMMAND >
< OBJECTSERVERID > W-1 < / OBJECTSERVERID >
< OBJEKTNAMN > StatusWebView < / OBJEKTNAMN >
< OBJEKTTYP > 1 < / OBJECTTYPE >
< OBJECTID > 7 < / OBJECTID >

< / XMLCOMMAND >
< XMLCOMMAND >

< OBJECTSERVERID > M-2 < / OBJECTSERVERID >
Processer som < OBJEKTNAMN > < / OBJEKTNAMN >
< OBJEKTTYP > 64 < / OBJECTTYPE >
< OBJECTID > 0 < / OBJECTID >

< / XMLCOMMAND >

< / XMLObjectXMLRequests > "" "

rot = ET.fromstring(incomingXML)
skriva ut incomingXML

# iterera genom alla värden
för element i
root.findAll('XMLCOMMAND'):

skriva ut "XMLCOMMAND"
skriva ut ' OBJECTNAME:', \

element.find('OBJECTNAME').text
skriva ut "OBJECTTYPE:', \

element.find('OBJECTTYPE').text
skriva ut ' OBJECTSERVERID:', \

element.find('OBJECTSERVERID').text
skriva ut "OBJECTID:', \

element.find('OBJECTID').text

Setup ElementTree data

Efter import av ElementTree koden och skriva XML-data till en sträng (Obs: du kan läser detta från en fil eller en webbegäran), vi först ställa in roten av XML-hierarkin. Roten till den här XML-koden är.

Gå igenom listan

Vi vet från att titta på XML-filen, som består av ett antal objekt. Vi använder en for-loop att göra detta (varje element inuti roten är ett objekt) med ElementTree kommandot findall (hitta alla XMLCOMMAND objekt i det här fallet).

Tolka de enskilda artiklarna


I inre av den for-loop, vi nu tolka individuella element i objektet. Här använder vi kommandot ElementTree element med textattributet. Observera att elementen inte i samma ordning! XML bryr sig inte om element på samma nivå i någon särskild ordning. Dessutom är det inte garanterat att det första elementet kommer att vara den första en Hämtad av ElementTree.

Beräknade element kan vara saknade från föremål. När det gäller saknas element i Python (med ElementTree) du absolut måste använda en if uttalande att ta itu med de saknade element. Om du

sedan riskerar du inte orsakar en Python undantag när på det returnerade värdet som ElementTree returnerar en ingen och inte ett giltigt värde. Om du använder strängar som värden, du kommer antagligen att ställa in din strängvariabel till en "" (tom sträng) snarare än att låta den till vara sätta till en Python ingen. Detta är ett mycket vanligt misstag skriftligen ElementTree kod.

om (element.find('XXXX').text == ingen):
#do något

Användningsområden för XML i Python program

XML används i stor utsträckning inom mjukvaruindustrin, alltifrån HL7 meddelanden inom vården, SOAP Simple Object Access Protocol () för klient-server informationsutbyte, och även XML används i Microsoft Word-filer. De viktigaste fördelarna med att använda XML är systemanvändning, läsbarhet, utbyggbarhet och möjligheten att redigera XML-filen i en textredigerare.

Programmerare använda ofta XML kan läsa och skriva konfigurationsfiler till disk, fortkörning felsökning och utveckling. Detta gör det lättare att starta testpaket för program som du kan läsa samma XML-strukturer från disken som du vill skicka via Internet i en webbegäran. Utbyggbarheten för XML kan du lägga till nya parametrar och strukturer i Python program medan att hantera bakåtkompatibiliteten. Del tre av denna serie kommer att visa hur detta görs i Python.

Slutsats

XML är ordrik och därigenom använder en hel del diskutrymme för att lagra och minne för att bearbeta. I världens Raspberry Pi och över Internet spelar detta allmänt ingen roll. I till exempel Arduino microcontrollers är RAM minnesutrymme dock en premie, så ett mer "tät" och enkla protokoll som JSON är lämpligare. Om diskutrymmet är en premie, kommer att XML komprimera mycket väl på grund av alla dubblering av nyckelord och beskrivningar.

XML är lätt att läsa, analysera och felsöka för nybörjare och erfarna programmerare lika.

Se Steg
Relaterade Ämnen

Nybörjarens guide till att använda Webhooks för hemautomation med Prota OS

TL:DR: webhooks är lätt att använda och ställa in med Prota OS. Använda webhooks till hundratals automation arbetsflöden.Lär dig hur du konfigurerar och använder Prota OS för Raspberry Pi här.Hämta Prota OS för Raspberry Pi här.Vad är webhooks?Google...

Använda Switcheroo slå på ljuset med din smartphone

Switcheroo är tänkt att styra små nuvarande, låg power DC-spänningar som de som vanligen används i små enheter. Koppla på en lampa är en hög ström, hög effekt AC spänning program. Det enklaste och säkraste sättet att byta dessa typer av saker med din...

Använda en USB-Barcode Scanner med en iPad

Du kan använda en USB-Barcode Scanner med en iPad men du måste få smart med olika tillbehör.Steg 1: Skaffa en powered "USB Camera Connection Kit" Du behöver en kamera eller media connection kit/adapter och i de flesta fall din kommer att vilja h...

Att få aktiekurser på Raspberry Pi (med Python)

Jag jobbar på några nya projekt som innefattar att få aktiekursen data från webben, som kommer att spåras och visas via min Raspberry Pi. Jag ville dela inställningen på hur man gör detta med hjälp av Python.Denna korta Instructable visar du hur inst...

TweeToy av Raspberry pi med Python

Jag skapade en leksak som talar somebody's tweets med Raspberry Pi.Denna leksak fångster objekt av avstånd sensor och sedan göra ljud (Tweet).Arkitekturen är mycket enkel. För att få Tweets, bara med hjälp av twitter api för python. Och spela upp lju...

Hur till använda ADXL345 på Raspberry pi

Jag har funnit att det finns inte mycket ute för att faktiskt ta reda på hur du använder ADXL345 på webben, men först, vad är en ADXL345, Jo det är en 3-axlig accelerometer med hög upplösning (13-bitars) mätning vid upp till ±16 g. Digital utgång dat...

Genom att använda Pimoroni Display-O-Tron med arduino

pimoroni Display-O-Tron 3000 (shop.pimoroni.com) är inte bara en av de bästa displayen för Raspberry Pi pengar kan köpa, hårdvaran köra stöds väl på Arduino plattform... Följ guiden!Steg 1: Hårdvara pinut Dot3k är en 3 x 16 LCD med 3 RGB bakgrundsbel...

Hur att använda moderna A / V dragutrustningen med gamla TV

om du har en gammal TV-uppsättning (före 1980) som inte har A / V-stöd, kan du lägga till komposit, SCART, S-Video, etc ingångar på den med inget krångel. Detta projekt bara kostnader om $40, eller billigare, om du shoppa runt. Jag älskar min TV, och...

Använda Switcheroo till kontroll leksaker med din smartphone

Tänk om du kunde göra en leksak göra en dans när den speciella någon kallas, eller Ställ in ett alarm på telefonen som orsakade ett fysiskt objekt att komma till livet? Med den Switcherooär det lätt!Först, du ska behov att få en Switcheroo ombord. Få...

Använda LEGO Mindstorm RCX ljussensor med Arduino (Program med Visuino)

I detta Instructable kommer du lära dig att programmera Arduino kontroll, och hämta data från LEGO Mindstorm RCX ljussensor med hjälp av Visuino - en enkel att använda grafiska utvecklingsmiljön för Arduino.Observera att anteckningen på några av bild...

Använda iRobot skapa Command Module med Linux

eftersom iRobot inte har tillhandahålls linux-användare med ett sätt att använda kommandot modul, jag var tvungen att räkna ut själv.Bli inte skrämmas, det är inte svårt alls, verkligen. Allt du behöver göra är att köra ett par skript.Kan komma igång...

Använda Printrbot's Autoleveling sond med Cura!

Printrbots nya enkla Maker's Edition kit är verkligen trevlig, speciellt för priset.De flesta människor använder Repetier-värd för utskrifter och Slic3r för skivning.Dock har jag haft med Cura för så länge jag har haft min skrivare.Mitt enda problem?...

Hur man ladda ner och använda Spotify på en dator med Windows

detta instructable kommer att lära dig hur man ladda ner och använda programmet musik Spotify på en dator som kör windows. Spotify är en kommersiell musik streaming program som erbjuder ett brett utbud av stora och oberoende skivbolag till lyssnare....

Använda en Accelerometer och gyroskop med Arduino

jag köpte nyligen en kombination 3 axlig accelerometer och 2 axis gyroskop från Sparkfun och jag ville lägga upp några av koden jag brukade få det igång. Jag planerar att använda den i en Arduino baserad MIDI-controller som jag kommer att utstationer...

Använda playstation remote på pc med arduino

jag har varit begåvad en gamla playstation 1 avlägsna en dag och ville använda den på datorn och sedan köpt en adapter på ebay som var defekt. Så beslutat jag äntligen att göra min egen med en arduino duemilanove. Jag försökte först att använda använ...

Hur att använda wiimote som en datormus med ljus som en sensor!

Denna guide om hur du ska koppla upp din Wii Remote (Wiimote) till datorn och använda den som en mus!Steg 1: Vad du behöverDetta är ganska enkelt att slutföra och du behöver bara följande:-Wiimote-Bluetooth-adapter-Ljus (eller sensor bar om du vill a...

DIY Fix att använda din GoPro fjärrkontroll med en QuikPod enbent!

QuikPod och GoPro är en perfekt match, men vad om du skulle vilja använda fjärrkontrollen, för att ha lättare tillgång till kontroller? Klipp din GoPro på, men det finns ingen plats för fjärrkontrollen. Här är vår lösning! http://youtu.be/MV3l-BUTm0w...

Använda Guitar Hero tangenter/knappar med din Arduino

delar-Guitar Hero Controller-Arduino-RGB-ljusdioder + nödvändigt motstånd-5 x 10 k motstånd (för knappar)-sladdar och skärbrädaJag bestämde mig för att äntligen få någon användning av min gamla guitar hero controller. Efter jag slet sönder handkontro...

Använda en Kindle Fire som en skärm för din Raspberry pi

I denna svårlösta jag kommer att visa dig hur man använder en kindle fire som skärm för en raspberry pi. Jag hade en gammal kindle fire som jag fick ett par år tillbaka som jag inte använder längre och jag tänkte, varför inte använda den som en monit...