Урок за парсер на Python XML: Прочетете пример за xml файл (Minidom, ElementTree)

Съдържание:

Anonim

Какво е XML?

XML означава eXtensible Markup Language. Той е проектиран да съхранява и транспортира малки до средни количества данни и е широко използван за споделяне на структурирана информация.

Python ви позволява да анализирате и модифицирате XML документ. За да анализирате XML документ, трябва да имате целия XML документ в паметта. В този урок ще видим как можем да използваме XML минидом клас в Python за зареждане и анализиране на XML файл.

В този урок ще научим-

  • Как да анализирате XML с помощта на minidom
  • Как да създадете XML възел
  • Как да анализирате XML с помощта на ElementTree

Как да анализирате XML с помощта на minidom

Създадохме примерен XML файл, който ще анализираме.

Стъпка 1) Във вътрешния файл можем да видим собствено име, фамилия, дом и област на опит (SQL, Python, тестване и бизнес)

Стъпка 2) След като анализираме документа, ще отпечатаме "името на възела" на корена на документа и " firstchild tagname" . Името на маркера и името на възела са стандартните свойства на XML файла.

  • Импортирайте модула xml.dom.minidom и декларирайте файл, който трябва да бъде анализиран (myxml.xml)
  • Този файл съдържа основна информация за служител като име, фамилия, дом, опит и т.н.
  • Използваме функцията за синтактичен анализ на XML минидом, за да заредим и анализираме XML файла
  • Имаме променлива doc и doc получава резултата от функцията за синтактичен анализ
  • Искаме да отпечатаме името на възела и дъщерното име от файла, така че го декларираме във функция за печат
  • Стартирайте кода - Той отпечатва името на възела (#document) от XML файла и първото име на дете (служител) от XML файла

Забележка :

Името на възела и дъщерното име са стандартните имена или свойства на XML dom. В случай, че не сте запознати с този тип конвенции за именуване.

Стъпка 3) Можем също да извикаме списъка с XML тагове от XML документа и да бъде разпечатан. Тук разпечатахме набора от умения като SQL, Python, Тестване и Бизнес.

  • Декларирайте променливата експертиза, от която ще извлечем цялата експертиза, която има служителят
  • Използвайте стандартната функция dom, наречена "getElementsByTagName"
  • Това ще получи всички елементи, наречени умение
  • Декларирайте цикъла над всеки един от маркерите за умения
  • Изпълнете кода - Той ще даде списък с четири умения

Как да създадете XML възел

Можем да създадем нов атрибут, като използваме функцията "createElement" и след това да добавим този нов атрибут или таг към съществуващите XML тагове. Добавихме нов таг „BigData“ в нашия XML файл.

  1. Трябва да кодирате, за да добавите новия атрибут (BigData) към съществуващия XML маркер
  2. След това трябва да разпечатате XML маркера с нови атрибути, добавени със съществуващия XML етикет
  • За да добавим нов XML и да го добавим към документа, използваме код "doc.create елементи"
  • Този код ще създаде нов маркер за умения за новия ни атрибут "Големи данни"
  • Добавете този таг за умения в документа първо дете (служител)
  • Изпълнете кода - новият таг "големи данни" ще се появи с другия списък с експертни познания

Пример за XML парсер

Пример за Python 2

импортирайте xml.dom.minidomdef main ():# използвайте функцията parse (), за да заредите и анализирате XML файлdoc = xml.dom.minidom.parse ("Myxml.xml");# разпечатайте възела на документа и името на първия подчинен етикетprint doc.nodeNameотпечатайте doc.firstChild.tagName# вземете списък с XML тагове от документа и отпечатайте всеки от тяхexpert = doc.getElementsByTagName ("експертиза")print "% d expert:"% expert.lengthза умения в опит:print skill.getAttribute ("име")# създайте нов XML маркер и го добавете в документаnewexpertise = doc.createElement ("опит")newexpertise.setAttribute ("име", "BigData")doc.firstChild.appendChild (нова експертиза)отпечатай ""expert = doc.getElementsByTagName ("експертиза")print "% d expert:"% expert.lengthза умения в опит:print skill.getAttribute ("име")ако name == "__main__":основна ();

Пример за Python 3

импортирайте xml.dom.minidomdef main ():# използвайте функцията parse (), за да заредите и анализирате XML файлdoc = xml.dom.minidom.parse ("Myxml.xml");# разпечатайте възела на документа и името на първия подчинен етикетпечат (doc.nodeName)печат (doc.firstChild.tagName)# вземете списък с XML тагове от документа и отпечатайте всеки от тяхexpert = doc.getElementsByTagName ("експертиза")print ("% d експертиза:"% expert.length)за умения в опит:печат (skill.getAttribute ("име"))# създайте нов XML маркер и го добавете в документаnewexpertise = doc.createElement ("опит")newexpertise.setAttribute ("име", "BigData")doc.firstChild.appendChild (нова експертиза)печат ("")expert = doc.getElementsByTagName ("експертиза")print ("% d експертиза:"% expert.length)за умения в опит:печат (skill.getAttribute ("име"))ако __name__ == "__main__":основна ();

Как да анализирате XML с помощта на ElementTree

ElementTree е API за манипулиране на XML. ElementTree е лесният начин за обработка на XML файлове.

Като примерни данни използваме следния XML документ:

SQLPython

Четене на XML с помощта на ElementTree:

първо трябва да импортираме модула xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Сега нека извлечем основния елемент:

root = tree.getroot()

Следва пълният код за четене на по-горе xml данни

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

Резюме:

Python ви позволява да анализирате целия XML документ наведнъж, а не само един ред наведнъж. За да анализирате XML документ, трябва да имате целия документ в паметта.

  • За да анализирате XML документ
    • Импортирайте xml.dom.minidom
    • Използвайте функцията "синтактичен анализ", за да анализирате документа (doc = xml.dom.minidom.parse (име на файл);
    • Извикайте списъка с XML тагове от XML документа, като използвате код (= doc.getElementsByTagName ("име на xml тагове")
  • За да създадете и добавите нов атрибут в XML документ
    • Използвайте функцията "createElement"