Innehållsförteckning
I den första delen av denna självstudiedel har vi fastställt alla parametrar som vi behöver ha för att kunna genomföra projektet som vi angav i handledningen för att bygga en webbplats utifrån en XML -fil.I denna andra del kommer vi att genomföra allt planerat med PytonormPå grund av komplexiteten i de olika aspekterna av projektet är det möjligt att vi inte kommer att ha allt perfekt i vår första implementering, men det är bra eftersom det ger oss möjlighet att skapa en fungerande prototyp och förbättra dess komponenter.
Hantera innehåll
Vår första åtgärd blir att hantera innehållet i vårt XML -fil, för detta kommer vi att använda SAX att vi redan hade installerat eller verifierat att vi hade det i föregående del av handledningen.
För att uppnå detta skapar vi först en behållare, till vilken vi ska skicka vår XML -fil som vi har skapat.
Låt oss se koden som vi måste placera:
från xml.sax.handler import ContentHandler från xml.sax import parse class TestHandler (ContentHandler): pass parse ('website.xml', TestHandler ())
När vi kör detta bör vi inte ha några fel, det betyder att vår XML redan är laddad och att parser gjorde sitt arbete, om vi ser något fel eller undantag måste vi dokumentera oss själva för att se vad orsaken är, vi kan lita på internet och den omfattande dokumentation som det har Pytonorm.
Nu ska vi lägga till en metod som visar oss att det vi har kommit fram till är sant, i vår klass TestHandler vi kommer att införliva följande kod:
def startElement (self, name, attrs): print name, attrs.keys ()
När vi kör vårt program igen kommer vi att se något liknande vad följande bild visar oss:
Nu är nästa steg att skaffa informationen som varje element innehåller, för detta kommer vi att införliva klassens metoder ContentHandler av SAX och vi kommer att hämta H1 -elementen som finns i vår XML -fil.
Vår klass ska vara följande:
från xml.sax.handler import ContentHandler från xml.sax import parse class HeadlineHandler (ContentHandler): in_headline = Falsk def __init __ (self, rubriker): ContentHandler .__ init __ (self) self.headlines = rubriker self.data = [ ] def startElement (self, name, attrs): if name == 'h1': self.in_headline = True def endElement (self, name): if name == 'h1': text = '' .join (self.data ) self. data = [] self.headlines.append (text) self.in_headline = Falska def -tecken (self, string): if self.in_headline: self.data.append (string) headlines = [] parse ('website. xml ', HeadlineHandler (rubriker)) print' FöljandeHallå där. Jag heter Mr. Gumby, och det här är min hemsida. Här är några av mina intressen:
- Skrikande
- Sovande
- Äter
Om vi kör det i en webbläsare ser vi att det tolkas korrekt och vi får ett resultat som liknar följande:
För att uppnå detta avslutade vi vår första iteration och denna handledning, det är upp till var och en att förlänga projektet, för att polera all kunskap som förvärvats och förbättra det första programmet mycket mer.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng