Gebruik van XML met de Raspberry Pi met Python (2 / 3 stap)

Stap 2: Parsing XML met Python


Wat bedoelen we met het ontleden?

Parsing verwijst naar de syntactische analyse van de XML-inbreng in de samenstellende delen ter vergemakkelijking van de uitvoering van code gebaseerd op het resultaat van de analyse. Met andere woorden, is het programma "lezen" de XML om te zoeken naar waarden die het zoekt, met aandacht voor de juiste syntaxis en vorm. XML-syntaxis bevat een geneste hiërarchie van elementen. Dit betekent dat elk niveau van de hiërarchie geleverd als een volledig gesloten deelverzameling van het vorige niveau wordt. In ons voorbeeld hieronder, elk object is volledig ingesloten ("genest") in de. Deze nesten zo ver omlaag als u nodig hebt, kunt u uitbreiden. Wanneer u schrijft parseren code deze nesten meestal resulteert in for-lussen in Python doorlopen van alle objecten op een niveau in de hiërarchie.

Opties voor het parsen van XML in Python

Er zijn vele verschillende pakketten voor het parsen van XML in Python. We zullen xml.etree.ElementTree gebruiken. ElementTree is een eenvoudig te gebruiken, snel XML-boom bibliotheek ingebouwd in Python. Het is enigszins beperkt in functies, maar voor eenvoudige XML message parsing het is moeilijk te verslaan.

Wat moet u weten over ElementTree? Zeer weinig opdrachten zijn nodig om een eenvoudige XML parseren. Deze paar worden hieronder geïllustreerd.

Python-voorbeeldcode

 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 

Setup de ElementTree-gegevens

Na de invoer van de code ElementTree en het schrijven van het XML-bestand naar een tekenreeks (Opmerking: je kan dit lezen vanuit een bestand of een webaanvraag), we eerst instellen naar de hoofdmap van de XML-hiërarchie. De wortel van deze XML-code is.

De lijst doorlopen

We weten uit te kijken naar het XML-bestand, dat uit een aantal objecten bestaat. We gebruiken een for-lus om dit te doen (elk element binnen de hoofdmap is een object) met behulp van de ElementTree opdracht findall (alle XMLCOMMAND objecten zoeken in dit geval).

Parseren van de afzonderlijke items

In het interieur van de for-lus, ontleden we nu de afzonderlijke elementen van het object. Hier opdracht wij ElementTree element met het kenmerk tekst. Merk op dat de elementen niet in dezelfde volgorde zijn! XML geeft niet als elementen op hetzelfde niveau in een bepaalde volgorde. Bovendien is het niet gegarandeerd dat het eerste element de eerste opgehaald door ElementTree zijn zal.

Verwachte elementen kunnen ontbreken van objecten. In het geval van ontbrekende elementen in Python (met behulp van ElementTree) absoluut moet u een indien verklaring te behandelen van het ontbrekende element. Als u

doen niet dan u het risico een Python-uitzondering veroorzaakt wanneer het in werking op de geretourneerde waarde zoals ElementTree een geen en niet een geldige waarde als resultaat gegeven. Als u tekenreeksen als waarden gebruikt, zal u waarschijnlijk wilt uw string-variabele ingesteld op een "" (lege tekenreeks) in plaats van te worden ingesteld op een Python geen. Dit is een zeer vaak voorkomende fout in ElementTree code te schrijven.

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

Toepassingen voor XML in Python programma 's

XML wordt veel gebruikt in de software-industrie, variërend van HL7 berichten in de gezondheidszorg, SOAP Simple Object Access Protocol () voor de uitwisseling van de informatie van de client / server-, en zelfs XML wordt gebruikt in Microsoft Word-bestanden. De belangrijkste voordelen van het gebruik van XML zijn kruis systeem gebruik, leesbaarheid, uitbreidbaarheid en de mogelijkheid van het bewerken van het XML-bestand in een teksteditor.

Programmeurs maken vaak gebruik van XML te lezen en schrijven van configuratiebestanden aan de schijf, snelheidsovertredingen foutopsporing en ontwikkeling. Dit maakt het gemakkelijker om in te stellen test suites voor programma's zoals je de dezelfde XML-structuren van de schijf lezen kunt als u via het Internet in een webaanvraag verzenden wilt. De uitbreidbaarheid van XML kunt u nieuwe parameters en structuren in uw Python programma's toevoegen, terwijl behoud van achterwaartse compatibiliteit. Deel III van deze serie zal tonen hoe dit wordt gedaan in Python.

Conclusie

XML is langdradig en als gevolg daarvan maakt gebruik van een eerlijke beetje van schijfruimte voor het opslaan en geheugen te verwerken. In de wereld van de Raspberry Pi en via het Internet dit in het algemeen maakt niet uit. Echter, in zoals de Arduino microcontrollers, RAM geheugenruimte is op een premie, zodat een meer "dichte" en eenvoudige protocol zoals JSON is meer geschikt. Als er onvoldoende schijfruimte beschikbaar is op een premie, gecomprimeerd XML zeer goed vanwege alle het dupliceren van trefwoorden en beschrijvingen.

XML is gemakkelijk te lezen, ontleden en debug voor beginners en ervaren programmeurs gelijk.

Gerelateerde Artikelen

Fotocel reageren op licht als een oog. een inleidende Project voor het gebruik van Processing met Arduino

Fotocel reageren op licht als een oog. een inleidende Project voor het gebruik van Processing met Arduino

In dit project ziet u een eenvoudig voorbeeld van het gebruik van verwerking zodat een grafische weergave van gegevens die een arduino als krijgt input van een sensor. In dit geval een fotocel.Nadat een oog beeld krijgen van internet, wat ik deed is,
Converteren van uw POP/drankautomaat voor het gebruik van RFID met Arduino

Converteren van uw POP/drankautomaat voor het gebruik van RFID met Arduino

Dit is mijn eerste instructable zodat elke nuttige opmerkingen worden op prijs gesteld. Ik begon dit project ongeveer een jaar geleden.Begon ik op zoek over het gebruik van de arduino te controleren van een automaat en ik vond dat een project zonder
Afspelen van Video met Python en GPIO

Afspelen van Video met Python en GPIO

Hallo weer. Vandaag ga ik om te laten zien van een lopend project dat ik bezig ben. Mijn bedrijf heeft me schonk het genoegen om te bouwen van een demo-kit voor een van onze productlijnen. Ik werk in de industrie voor laagspanning waarin brandalarm,
Beheren van Arduino met python gebaseerd web API (geen php)

Beheren van Arduino met python gebaseerd web API (geen php)

In deze handleiding zal ik u tonen hoe om uw apparaat arduino van een webpagina te controleren! Daarna zal ik u tonen hoe om te controleren uw arduino vanaf uw mobiele apparaat en zelfs het maken van een web-gebaseerde API voor het beheersen van je a
Het eerste gebruik van ESP8266 met Arduino Uno

Het eerste gebruik van ESP8266 met Arduino Uno

Vandaag, ga ik om u te tonen die hoe kunnen we onze module ESP8266 voor gebruik met Arduino UNO voorbereiden.De noodzaak lijst:1. Arduino UNO (met USB-kabel die op uw computer via USB-kabel aangesloten, ook wordt gebruikt de spanning)2. uw computer (
Het gebruik van calqueerpapier met uw patroon

Het gebruik van calqueerpapier met uw patroon

keer om te leren van de basics: met behulp van calqueerpapier ter gelegenheid van uw patroon.Wat u nodig hebt:-Stof-Patroon-Transfer papier/tracering papier (het heeft meerdere namen)-Tracing wiel1. Beveilig uw patroon op je stof. (Check out mijn and
Het gebruik van Miracast met een Android toestel

Het gebruik van Miracast met een Android toestel

Terug naar toen Android 4.0 werd ontwikkeld had het een systeem ingebouwd genaamd Wi-Fi Direct, waarmee ad hock draadloze netwerken worden opgezet. Dit nooit echt aangeslagen maar het was dit systeem die later toegestaan Miracast worden ontwikkeld to
Het gebruik van Google Chrome op Raspberry Pi 2

Het gebruik van Google Chrome op Raspberry Pi 2

Vandaag, ga ik u tonen hoe Google Chrome browser werken op Raspberry Pi 2 te gebruiken. Ik lees dit onderwerp op de Raspberry Pi Forums. Tijdens het uitvoeren van dat uw Raspberry Pi 2 met geladen Noobs opgenomen Raspbian Jessie, kun je dat de codes
Beheersing van Edison met Python

Beheersing van Edison met Python

Dit is een project om bekend zijn de Edison Intel en Intel Arduino expansiekaart.In de tussentijd ik eindelijk geleerd wat Python code.Het een tijdje geweest aangezien ik Linux gebruikt heb en nu had ik om het te doen zonder een Gui venster front-end
Beheersing van richting en snelheid van gelijkstroommotor met Raspberry Pi

Beheersing van richting en snelheid van gelijkstroommotor met Raspberry Pi

Dit is een eenvoudige gids wanneer leert u hoe u kunt besturen gelijkstroommotoren met behulp van de Raspberry pi. Over raspberrypi - is het een cradit kaart grootte kleine computer die General-Purpose input-output GPIO pinnen die worden gebruikt hee
Het gebruik van uw MotorShield met gelijkstroommotoren

Het gebruik van uw MotorShield met gelijkstroommotoren

Ik wilde helpen met het geven van de Gemeenschap een eenvoudiger te begrijpen gids voor het gebruik van gelijkstroommotoren met de Motorshield die kan worden aangesloten op de Arduino.Dus gelieve pak die je Arduino en MotorShield en ik hoop dat we ku
Integratie van LEDs met fischertechnik

Integratie van LEDs met fischertechnik

dit instructable beschrijft hoe te integreren LEDs met fischertechnik elementen!Mijn oorspronkelijke visie was het creëren van een mechanische videospel dat zou LEDs oplichten. Toen ik begon knutselen met fischertechnik van Eco Power kit (#57485) en
Plotly met Python

Plotly met Python

Ik struikelde onlangs, op Plotly, een prachtige online Data Visualization systeem op grond van een artikel maken. Het is overbodig voor mij om te zeggen dat er verschillende artikelen waaruit het gebruik van Plotly voor Arduino, Raspberry Pi, etceter
Inleiding tot de aan het gebruik van de Google api.

Inleiding tot de aan het gebruik van de Google api.

Google naar verluidt niet langer steunt deze api met de nieuwste versie van python. Ik maakte een fout verslag, maar nog nooit gehoord terug.Voorwoord: Er is een programmeertaal die is gericht op nieuwe ontwikkelaars. Die taal heet Python. Het is bes