ElementTree
Пример XML-файла:В составе стандартной библиотеки языка Python есть библиотека ElementTree.
from xml.etree import ElementTree tree = ElementTree.parse("example.xml") root = tree.getroot() # use root = ElementTree.fromstring(string_xml_data) to parse from str print(root) print(root.tag, root.attrib)
Перебор детей:
for child in root: print(child.tag, child.attrib)
Также можно использовать индексацию через числа чтобы обращаться к детям и к их детям:
print(root[0][0].text)
Все элементы нашего дерева будут иметь один класс Element.
Поиск и перебор всех элементов в поддереве:
for element in root.iter("scores"):
print(element)
for element in root.iter("scores"): score_sum = 0 for child in element: score_sum += float(child.text) print(score_sum)
С помощью метода .findall можно вести перебор только среди детей.
Запись в файле:
from xml.etree import ElementTree tree = ElementTree.parse("example.xml") root = tree.getroot() tree.write("example_copy.xml")
Изменение атрибутов и текстового содержимого:
from xml.etree import ElementTree tree = ElementTree.parse("example.xml") root = tree.getroot() greg = root[0] module1 = next(greg.iter("module1")) print(module1, module1.text) module1.text = str(float(module1.text) + 30) certificate = greg[2] certificate.set("type", "with distinction") tree.write("example_modified.xml")
Создание и удаление элементов:
from xml.etree import ElementTree tree = ElementTree.parse("example.xml") root = tree.getroot() greg = root[0] description = ElementTree.Element("description") description.text = "Showed excellent skills during the course" greg.append(description) description = greg.find("description") greg.remove(description) tree.write("example_modified.xml")
Создание дерева с самого начала:
Через конструктор SubElement можно указать чьим ребенком является элемент.
lxml
Для работы с реальными плохо сформированными HTML файлами используются библиотеки lxml и BeautifulSoup.
Пример разбора страницы:
Наконец-то понял, еще есть такой вариант https://pythononline.ru/question/kak-generirovat-xml-s-pomoschyu-python
ОтветитьУдалить