Eksempler på Python XML Processing

Python bruker Document Object Model å lagre og manipulere XML-elementer. Den analyserer automatisk XML-kode og skaper et dokument objekt til å modellere den, som inneholder XML-noder. XML biblioteket kan deretter gå gjennom dokumentet for å finne ulike elementer og attributter. Du må importere biblioteket "xml.dom.minidom" for å få tilgang Pythons DOM XML behandling bibliotek.

Tilgang til og lese en XML-fil

Pythons XML bibliotek kan automatisk analysere XML tekstfiler eller tekststrenger som representerer et XML-dokument. Her er et eksempel på hvordan å analysere en XML tekstfil og lagre resultatet som et Python Dokumentobjekt:

xmlFile = open ( "sample.xml")
XMLDocument = xml.dom.minidom.parse (xmlFile)

Hvis du ønsker å analysere en rekke XML, trenger du "parseString" -funksjonen.

xmlString = "<parentnode> <childnode /> <childnode /> <differentchildnode> En annen node </ differentchildnode> </ parentnode>"
XMLDocument = xml.dom.minidom.parseString (xmlString);

Tilgang Element noder og barnet noder

XML-elementer er representert som noder. For å få tilgang til et element i XML-dokument, må du søke etter den ved navn med metoden "getElementsByTagName," f.eks:

search = getElementsByTagName ( "ExampleNode")

Dette kodelinje returnerer en NodeList. For å få et enkelt element node, kan du bare ringe:

myNode = search [0]

Noder kan inneholde underordnede noder. Du kan få en liste over barn noder gitt en referanse til en forelder node, for eksempel:

myChildNodes = myNode.childNodes

Data og attributter

For å få tilgang til data som finnes i en elementets åpning og lukking koder, må du få tilgang til "data" -feltet i node objektet. For eksempel, hvis en node kalt "myNode" representerte XML teksten "<ExampleNode ATTR1 =" 1 "ATTR2 =" 2 "> sampletext </ ExampleNode>" i et dokument, så du kan trekke ut ordet "sampletext" ved å referere til " myNode.data. " For å få tilgang til de attributtene som node, ville du trenger å først få tilgang til NamedNodeMap av attributtene som følger:

attrList = myNode.attributes

Så fra den listen, trekke deg navnene og verdiene til egenskapene:

myList = []
for jeg er innenfor rekkevidde (attrList.length): myList.append (attrList.item (i) .name + '=' + attrList.item (i) .Value)
print "," .join (myList)

Skrive XML-kode

Du kan skrive en Node objekt til noen "skrivbar" objekt ved hjelp av funksjonen "writexml." Dette inkluderer skrivbare filer. Et eksempel er som følger:

destinationFile = open ( "samplewrite.xml", "w")
doc.writexml (destinationFile)
destinationFile.close ()

Du kan også skrive XML-dokumentet som en streng ved hjelp av funksjonen "toxml" eller "toprettyxml," f.eks:

print doc.toxml ()

eller

print doc.toprettyxml ()

Funksjonen "toprettyxml" bruker mellomrom og innrykk for å gjøre XML mer lesbar for mennesker.