Питхон КСМЛ парсер лекција: Прочитајте пример кмл датотеке (Минидом, ЕлементТрее)

Преглед садржаја:

Anonim

Шта је КСМЛ?

КСМЛ је скраћеница од еКстенсибле Маркуп Лангуаге. Дизајниран је за чување и транспорт малих до средњих количина података и широко се користи за размену структурираних информација.

Питхон вам омогућава да рашчланите и измените КСМЛ документ. Да бисте рашчланили КСМЛ документ, морате имати цео КСМЛ документ у меморији. У овом упутству ћемо видети како можемо да користимо КСМЛ класу минидома у Питхону за учитавање и рашчлањивање КСМЛ датотеке.

У овом упутству ћемо научити-

  • Како рашчланити КСМЛ помоћу минидома
  • Како створити КСМЛ чвор
  • Како рашчланити КСМЛ помоћу ЕлементТрее

Како рашчланити КСМЛ помоћу минидома

Направили смо пример КСМЛ датотеке коју ћемо рашчланити.

Корак 1) Унутар датотеке можемо видети име, презиме, дом и подручје стручности (СКЛ, Питхон, тестирање и пословање)

Корак 2) Након што смо рашчланили документ, исписаћемо „ име чвора“ у корену документа и „ фирстцхилд тагнаме“ . Име ознаке и име чвора су стандардна својства КСМЛ датотеке.

  • Увезите модул кмл.дом.минидом и пријавите датотеку која мора бити рашчлањена (микмл.кмл)
  • Ова датотека садржи неке основне информације о запосленом попут имена, презимена, куће, стручности итд.
  • За учитавање и рашчлањивање КСМЛ датотеке користимо функцију рашчлањивања на КСМЛ минидому
  • Имамо променљиву доц и доц добија резултат функције рашчлањивања
  • Желимо да из датотеке одштампамо име чвора и подређено име, па га пријављујемо у функцији исписа
  • Покрените код - Исписује име чвора (#доцумент) из КСМЛ датотеке и прво подређено име ознаке (запослени) из КСМЛ датотеке

Напомена :

Име чвора и име подређене ознаке су стандардна имена или својства КСМЛ домене. У случају да нисте упознати са овом врстом именовања.

Корак 3) Такође можемо позвати листу КСМЛ ознака из КСМЛ документа и исписати је. Овде смо одштампали скуп вештина попут СКЛ-а, Питхон-а, тестирања и пословања.

  • Изјавите променљиву стручност из које ћемо издвојити сву стручност коју има запослени
  • Користите стандардну функцију дом названу "гетЕлементсБиТагНаме"
  • Ово ће добити све елементе именоване вештина
  • Прогласите петљу преко сваке од тагова вештина
  • Покрените код - Даће вам листу од четири вештине

Како створити КСМЛ чвор

Можемо створити нови атрибут помоћу функције „цреатеЕлемент“, а затим додати нови атрибут или ознаку постојећим КСМЛ ознакама. Додали смо нову ознаку „БигДата“ у нашу КСМЛ датотеку.

  1. Морате кодирати да бисте додали нови атрибут (БигДата) постојећој КСМЛ ознаци
  2. Затим морате да одштампате КСМЛ ознаку са новим атрибутима придруженим постојећој КСМЛ ознаци
  • Да бисмо додали нови КСМЛ и додали га у документ, користимо код „доц.цреате елементс“
  • Овај код ће створити нову ознаку вештине за наш нови атрибут „Велики подаци“
  • Додајте ову ознаку вештине у документ прво дете (запослени)
  • Покрените код - нова ознака „велики подаци“ ће се појавити са другом листом стручности

Пример КСМЛ парсера

Питхон 2 Пример

импорт кмл.дом.минидомдеф маин ():# користите функцију парсе () за учитавање и рашчлањивање КСМЛ датотекедоц = кмл.дом.минидом.парсе ("Микмл.кмл");# исписати чвор документа и име прве подређене ознакепринт доц.нодеНамеиспис доц.фирстЦхилд.тагНаме# набавите листу КСМЛ ознака из документа и одштампајте свакуекперт = доц.гетЕлементсБиТагНаме ("стручност")испис "% д стручност:"% стручност.дуљиназа стручност:исписати скилл.гетАттрибуте ("име")# креирајте нову КСМЛ ознаку и додајте је у документневекпертисе = доц.цреатеЕлемент ("стручност")невекпертисе.сетАттрибуте ("име", "БигДата")доц.фирстЦхилд.аппендЦхилд (нова експертиза)одштампај ""екперт = доц.гетЕлементсБиТагНаме ("стручност")испис "% д стручност:"% стручност.дуљиназа стручност:исписати скилл.гетАттрибуте ("име")ако је име == "__маин__":главни();

Питхон 3 Пример

импорт кмл.дом.минидомдеф маин ():# користите функцију парсе () за учитавање и рашчлањивање КСМЛ датотекедоц = кмл.дом.минидом.парсе ("Микмл.кмл");# исписати чвор документа и име прве подређене ознакепринт (доц.нодеНаме)испис (доц.фирстЦхилд.тагНаме)# набавите листу КСМЛ ознака из документа и одштампајте свакуекперт = доц.гетЕлементсБиТагНаме ("стручност")принт ("% д стручност:"% екперт.ленгтх)за стручност:принт (скилл.гетАттрибуте ("име"))# креирајте нову КСМЛ ознаку и додајте је у документневекпертисе = доц.цреатеЕлемент ("стручност")невекпертисе.сетАттрибуте ("име", "БигДата")доц.фирстЦхилд.аппендЦхилд (нова експертиза)испис ("")екперт = доц.гетЕлементсБиТагНаме ("стручност")принт ("% д стручност:"% екперт.ленгтх)за стручност:принт (скилл.гетАттрибуте ("име"))ако је __наме__ == "__главно__":главни();

Како рашчланити КСМЛ помоћу ЕлементТрее

ЕлементТрее је АПИ за манипулацију КСМЛ-ом. ЕлементТрее је једноставан начин за обраду КСМЛ датотека.

Као узорак података користимо следећи КСМЛ документ:

SQLPython

Читање КСМЛ-а помоћу ЕлементТрее:

прво морамо увести модул кмл.етрее.ЕлементТрее.

import xml.etree.ElementTree as ET

Сада дохватимо основни елемент:

root = tree.getroot()

Следи комплетан код за читање горњих кмл података

import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)
излаз:
Expertise Data:SQLPython

Резиме:

Питхон вам омогућава да рашчланите цео КСМЛ документ одједном, а не само један ред одједном. Да бисте рашчланили КСМЛ документ, морате имати цео документ у меморији.

  • За рашчлањивање КСМЛ документа
    • Увезите кмл.дом.минидом
    • Користите функцију "рашчлањивање" за рашчлањивање документа (доц = кмл.дом.минидом.парсе (име датотеке);
    • Позовите листу КСМЛ ознака из КСМЛ документа помоћу кода (= доц.гетЕлементсБиТагНаме ("име кмл ознака")
  • Да бисте креирали и додали нови атрибут у КСМЛ документ
    • Користите функцију "цреатеЕлемент"