ParseString usuli
SAX tahlilini yaratish va belgilangan XML satrini tahlil qilish uchun yana bir usul mavjud .
xml.sax.parseString (xmlstring, contenthandler [, errorhandler])
Parametrlar tafsilotlari bu erda.
xmlstring: Bu o'qish uchun XML satrining nomi.
contenthandler: Bu ContentHandler ob'ekti bo'lishi kerak.
errorhandler: Agar ko'rsatilgan bo'lsa, errorhandler SAX ErrorHandler ob'ekti bo'lishi kerak.
Misol
#! / usr / bin / python3
import xml.sax
Python 3
410
sinf MovieHandler (xml.sax.ContentHandler):
def __init __ (o'zi):
self.CurrentData = ""
self.type = ""
self.format = ""
self.year = ""
self.rating = ""
self.stars = ""
self.description = ""
# Element ishga tushganda qo'ng'iroq qiling
def startElement (o'zi, yorlig'i, atributlari):
self.CurrentData = teg
agar teg == "film":
bosib chiqarish ("***** Film *****")
sarlavha = atributlar ["sarlavha"]
bosib chiqarish ("Sarlavha:", sarlavha)
# Elementlar tugashi bilan qo'ng'iroq qiling
def endElement (o'zini, teg):
agar self.CurrentData == "type":
bosib chiqarish ("Turi:", self.type)
elif self.CurrentData == "format":
bosib chiqarish ("Format:", self.format)
elif self.CurrentData == "yil":
bosib chiqarish ("Yil:", o'z-o'ziga yil)
elif self.CurrentData == "reyting":
bosib chiqarish ("Reyting:", o'z-o'zini boshqarish)
elif self.CurrentData == "yulduzlar":
bosib chiqarish ("Yulduzlar:", self.stars)
elif self.CurrentData == "tavsif":
bosib chiqarish ("Ta'rif:", self.sescript)
self.CurrentData = ""
Belgilar o'qilganda # qo'ng'iroq
def belgilar (o'ziga, tarkibga):
agar self.CurrentData == "type":
self.type = tarkib
elif self.CurrentData == "format":
Python 3
411
self.format = tarkib
elif self.CurrentData == "yil":
self.year = tarkib
elif self.CurrentData == "reyting":
self.rating = tarkib
elif self.CurrentData == "yulduzlar":
self.stars = tarkib
elif self.CurrentData == "tavsif":
self.description = tarkib
agar (__name__ == "__main__"):
# XMLReader yarating
tahlil qiluvchi = xml.sax.make_parser ()
# bo'sh joylarni o'chirish
parser.setFeature (xml.sax.handler.feature_namespaces, 0)
# standart kontekstHandlerni bekor qiladi
Handler = MovieHandler ()
parser.setContentHandler (ishlov beruvchi)
parser.parse ("movies.xml")
Bu quyidagi natijaga olib keladi -
***** Film *****
Sarlavha: Dushmanlar Orqasida
Turi: Urush, triller
Formati: DVD
Yil: 2003 yil
Baho: PG
Yulduzlar: 10
Tavsif: AQSh-Yaponiya urushi haqida gapiring
***** Film *****
Sarlavha: Transformerlar
Turi: Anime, ilmiy fantastika
Formati: DVD
Yil: 1989 yil
Baho: R
Yulduzlar: 8
Python 3
412
Tavsif: Ilmiy fantastika
***** Film *****
Sarlavha: Trigun
Turi: Anime, harakat
Formati: DVD
Baho: PG
Yulduzlar: 10
Ta'rif: Ved Shtampede!
***** Film *****
Sarlavha: Ishtar
Turi: Komediya
Formati: VHS
Baho: PG
Yulduzlar: 2
Tavsif: Ko'rinadigan zerikish
SAX API hujjatlari haqida to'liq ma'lumot olish uchun standart Python SAX-ga murojaat qiling
API .
Do'stlaringiz bilan baham: |