Учебники

25) Управление XML с помощью Python

Что такое XML?

XML расшифровывается как расширяемый язык разметки. Он был разработан для хранения и транспортировки небольших и средних объемов данных и широко используется для обмена структурированной информацией.

Python позволяет вам анализировать и изменять XML-документ. Для разбора XML-документа вам необходимо иметь весь XML-документ в памяти. В этом уроке мы увидим, как мы можем использовать класс минидомов XML в Python для загрузки и анализа XML-файла.

В этом уроке мы узнаем

Как разобрать XML с помощью минидома

Мы создали образец XML-файла, который мы собираемся проанализировать.

Шаг 1) Внутри файла мы видим имя, фамилию, дом и область знаний (SQL, Python, Testing and Business)

Python XML Parser Tutorial: создание и чтение XML с примерами

Шаг 2) После того, как мы проанализируем документ, мы распечатаем «имя узла» корня документа и « тэг firstchild» . Tagname и nodename являются стандартными свойствами файла XML.

Python XML Parser Tutorial: создание и чтение XML с примерами

  • Импортируйте модуль xml.dom.minidom и объявите файл для анализа (myxml.xml).
  • Этот файл содержит основную информацию о сотруднике, такую ​​как имя, фамилия, дом, опыт и т. Д.
  • Мы используем функцию разбора на минидоме XML для загрузки и разбора файла XML
  • У нас есть переменная doc, и doc получает результат функции parse
  • Мы хотим напечатать имя файла и дочерний тэг из файла, поэтому мы объявляем это в функции печати
  • Запустите код. Он выводит имя узла (#document) из файла XML и первый дочерний тэг (employee) из файла XML.

Примечание :

Nodename и дочерний тэг являются стандартными именами или свойствами XML dom. В случае, если вы не знакомы с этим типом именования.

Шаг 3) Мы также можем вызвать список тегов XML из документа XML и распечатать. Здесь мы распечатали набор навыков, таких как SQL, Python, тестирование и бизнес.

Python XML Parser Tutorial: создание и чтение XML с примерами

  • Объявите переменную экспертизу, из которой мы собираемся извлечь всю экспертизу, имя которой сотрудник
  • Используйте стандартную функцию dom под названием «getElementsByTagName»
  • Это получит все элементы с именем skill
  • Объявите цикл над каждым из тегов умений
  • Запустите код — он даст список из четырех навыков

Как создать XML-узел

Мы можем создать новый атрибут с помощью функции «createElement», а затем добавить этот новый атрибут или тег к существующим тегам XML. Мы добавили новый тег «BigData» в наш XML-файл.

  1. Вы должны написать код, чтобы добавить новый атрибут (BigData) в существующий тег XML
  2. Затем вы должны распечатать тег XML с новыми атрибутами, добавленными к существующему тегу XML.

Python XML Parser Tutorial: создание и чтение XML с примерами

  • Чтобы добавить новый XML и добавить его в документ, мы используем код «doc.create elements»
  • Этот код создаст новый тег навыка для нашего нового атрибута «Большие данные»
  • Добавьте этот навык тег в документ первый ребенок (сотрудник)
  • Запустите код — появится новый тег «большие данные» с другим списком знаний.

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

Пример Python 2

import xml.dom.minidom

def main():
# use the parse() function to load and parse an XML file
   doc = xml.dom.minidom.parse("Myxml.xml");
  
# print out the document node and the name of the first child tag
   print doc.nodeName
   print doc.firstChild.tagName
  
# get a list of XML tags from the document and print each one
   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
# create a new XML tag and add it into the document
   newexpertise = doc.createElement("expertise")
   newexpertise.setAttribute("name", "BigData")
   doc.firstChild.appendChild(newexpertise)
   print " "

   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
if name == "__main__":
  main();

Python 3 Example

import xml.dom.minidom

def main():
    # use the parse() function to load and parse an XML file
    doc = xml.dom.minidom.parse("Myxml.xml");

    # print out the document node and the name of the first child tag
    print (doc.nodeName)
    print (doc.firstChild.tagName)
    # get a list of XML tags from the document and print each one
    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

    # create a new XML tag and add it into the document
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print (" ")

    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

if __name__ == "__main__":
    main();

How to Parse XML using ElementTree

ElementTree is an API for manipulating XML. ElementTree is the easy way to process XML files.

В качестве примера данных мы используем следующий XML-документ:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

Чтение XML с использованием ElementTree:

Сначала мы должны импортировать модуль xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Теперь давайте выберем корневой элемент:

root = tree.getroot()

Ниже приведен полный код для чтения выше данных XML

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()

# all items data
print('Expertise Data:')

for elem in root:
   for subelem in elem:
      print(subelem.text)

вывод:

Expertise Data:
SQL
Python

Резюме:

Python позволяет анализировать весь документ XML за один раз, а не только одну строку за раз. Для разбора XML-документа вам необходимо иметь весь документ в памяти.

  • Разобрать XML-документ
    • Импорт xml.dom.minidom
    • Используйте функцию parse для разбора документа (doc = xml.dom.minidom.parse (имя файла);
    • Вызовите список тегов XML из документа XML, используя код (= doc.getElementsByTagName («имя тегов xml»)
  • Создать и добавить новый атрибут в XML-документ
    • Используйте функцию «createElement»