Agar biz XML fayldan chunchaki barcha ma’lumotni o’qib olmoqchi bo’lsak, quyidagi dasturning o’zi biz uchun yetarli bo’ladi.
Natija:
Endi bizga shu faylning ichidagi barcha talabalarning ma’lumotlarini alohida olib, ekranga chiqarish topshirig’i berilgan bo’lsa, unda biz bs4(beautifulsoup4 ning qisqartmasi, pythonda shunday nom bilan import qilinadi) modulidagi findAll() metodidan foydalanamiz.
Dastlab biz xuddi csv fayllar bilan ishlaganda reader yoki writer yaratib olganimiz kabi, bunda ham shu kabi o’qisak va yozsak bo’ladigan birorta reader+writer = readwriter obyektini yaratib olishimiz kerak. Buni csv reader yoki csv writerdan asosiy farqi, readwriterning ma’lumotlari o’zida saqlanadi va bu vaqtinchalik bo’ladi. Biz undan ma’lumotlarni o’qib olamizmi yoki unga o’zgartirish kiritamizmi faqatgina o’zi o’zgaradi, xolos, fayl emas.
Biz beshinchi qatorda BeautifulSoup funksiyasi orqali readwriter obyektini yaratib olyapmiz. Bu funksiyadagi markup argumentiga 1.xml faylidagi yozilgan XML kodni qiymat qilib beramiz, bu string bo’ladi. Features ga “xml” ni qiymat qilib beramiz. Bu bizning XML fayl bilan ishlayotganimizni bildiradi.
Readwriter.findAll(“talaba”) amalini bajarib biz readwriterdagi barcha talaba nomli teglarni list ko’rinishida olyapmiz va undagi har bir element(teg) ham readwriter kabi obyekt bo’ladi. Agar biz readwriter kabi obyektlarning text xususiyatidan foydalansak, biz uning ichidagi barcha text(matnlarni olgan bo’lamiz, teglar kirmaydi).
Natija:
findAll() kabi find() metodi ham mavjud. Bu metod listlardagi find() metodi bilan bir xil amalni bajaradi.
Yuqoridagi dasturda find() metodi readwriterdagi birinchi kelgan talaba tegini topib beradi.
Natija:
Agar biz yuqoridagi dasturdagi print(readwriter.find("talaba")) qatorini print(readwriter.find("talaba").text) qatoriga almashtirsak quyidagicha natija olamiz.
Do'stlaringiz bilan baham: |