Программирование и разработка веб-приложений. Использование Python для работы с XML

Содержание

Слайд 2

Вид XML файла

Вид XML файла

Слайд 3

Основные модули для парсинга from xml.dom import minidom from xml.etree import ElementTree #import xml.etree.ElementTree as ET

Основные модули для парсинга

from xml.dom import minidom
from xml.etree import ElementTree
#import xml.etree.ElementTree

as ET
Слайд 4

Работа с файлом XML_FILE='sample3.xml' tree = ET.ElementTree(file=XML_FILE) tree=ET.parse('sample3.xml') file01=open('books.xml','r') tree=ElementTree.parse(file01) xmldoc=minidom.parse('books.xml')

Работа с файлом

XML_FILE='sample3.xml'
tree = ET.ElementTree(file=XML_FILE)
tree=ET.parse('sample3.xml')
file01=open('books.xml','r')
tree=ElementTree.parse(file01)
xmldoc=minidom.parse('books.xml')

Слайд 5

Парсинг XML файла from xml.dom import minidom xmldoc=minidom.parse('books.xml') a_list=xmldoc.getElementsByTagName('person') print(len(a_list)) print(a_list[0].attributes['name'].value)

Парсинг XML файла

from xml.dom import minidom
xmldoc=minidom.parse('books.xml')
a_list=xmldoc.getElementsByTagName('person')
print(len(a_list))
print(a_list[0].attributes['name'].value)
for i in a_list:
print(i.attributes['name'].value)

Использование xml.dom

Слайд 6

Распарсить строку from xml.dom import minidom f = minidom.parseString(''' ''') Использование xml.dom

Распарсить строку

from xml.dom import minidom
f = minidom.parseString('''

author='Chukovskiy' pers="Dobriy Doctor">






''')

Использование xml.dom

Слайд 7

a = f.getElementsByTagName('Book') #взятие элементов по тегу name=[] author=[] pers=[] for

a = f.getElementsByTagName('Book') #взятие элементов по тегу
name=[]
author=[]
pers=[]
for i in a:
name.append(i.getAttribute('name'))


#добавление атрибутов в список
author.append(i.getAttribute('author'))
pers.append(i.getAttribute('pers'))
Слайд 8

Просмотр корня дерева from xml.etree import ElementTree file01=open('books.xml','r') tree=ElementTree.parse(file01) print(tree) root=tree.getroot() print(root) print(root.tag) print(root.attrib) print(root.text) ElementTree

Просмотр корня дерева

from xml.etree import ElementTree
file01=open('books.xml','r')
tree=ElementTree.parse(file01)
print(tree)
root=tree.getroot()
print(root)
print(root.tag)
print(root.attrib)
print(root.text)

ElementTree

Слайд 9

Просмотр тегов и атрибутов for i in root: print(i.tag, i.attrib) print(root[0][0].text)

Просмотр тегов и атрибутов

for i in root:
print(i.tag, i.attrib)
print(root[0][0].text)
for i

in root:
for j in i:
print(j.tag,j.attrib)

Если не работает - смотрите кодировку xml

Слайд 10

Просмотр тегов корня from xml.etree import ElementTree file01=open('books.xml','r') tree=ElementTree.parse(file01) #tree=ElementTree.ElementTree(file='books.xml') root=tree.getroot()

Просмотр тегов корня

from xml.etree import ElementTree
file01=open('books.xml','r')
tree=ElementTree.parse(file01)
#tree=ElementTree.ElementTree(file='books.xml')
root=tree.getroot()
print(root)
print(root.tag)
print(root.attrib)
print(root.text)
for i in root.iterfind('.'):
print(i.tag)

Слайд 11

Проход по свойствам корня root=tree.getroot() for i in root: print(i.tag, i.attrib)

Проход по свойствам корня

root=tree.getroot()
for i in root:
print(i.tag, i.attrib)

Слайд 12

Просмотр, используя keys и items for i in root: print(i.tag,i.keys(),i.items())

Просмотр, используя keys и items

for i in root:
print(i.tag,i.keys(),i.items())

Слайд 13

keys и items с итератором по root for i in root.iter(): print(i.tag, i.keys(),i.items(),i.text)

keys и items с итератором по root

for i in root.iter():
print(i.tag, i.keys(),i.items(),i.text)

Слайд 14

Использование итератора для просмотра сведений for i in root.iter('book'): print(i.tag, i.keys(),i.items(),i.text)

Использование итератора для просмотра сведений

for i in root.iter('book'):
print(i.tag, i.keys(),i.items(),i.text)

Слайд 15

Использование итератора поиска for i in root.iterfind('.'): print(i.tag)

Использование итератора поиска

for i in root.iterfind('.'):
print(i.tag)

Слайд 16

for i in root.iterfind('.//'): print(i.tag)

for i in root.iterfind('.//'):
print(i.tag)

Слайд 17

for i in root.iterfind('./book//'): print(i.tag)

for i in root.iterfind('./book//'):
print(i.tag)

Слайд 18

Использование итератора для просмотра сведений for i in tree.iter('person'): print(i.attrib)

Использование итератора для просмотра сведений

for i in tree.iter('person'):
print(i.attrib)

Слайд 19

Одиночны поиск и поиск всех информации for i in root.findall('book'): bookpages=i.find('pages').text bookpersons=i.findall('person') name=i.get('name') print(name) print(bookpages) print(bookpersons)

Одиночны поиск и поиск всех информации

for i in root.findall('book'):
bookpages=i.find('pages').text
bookpersons=i.findall('person')
name=i.get('name')
print(name)
print(bookpages)
print(bookpersons)

Слайд 20

Запись #iter ищет среди потомков number for i in root.iter('number'): new_number=int(i.text)+1 i.text=str(new_number) i.set('updated','2017') tree.write('books2.xml')

Запись

#iter ищет среди потомков number
for i in root.iter('number'):
new_number=int(i.text)+1
i.text=str(new_number)
i.set('updated','2017')
tree.write('books2.xml')

Слайд 21

Поиск и удаление for i in root.findall('book'): pages=int(i.find('pages').text) print(pages) if pages >100: root.remove(i)

Поиск и удаление

for i in root.findall('book'):
pages=int(i.find('pages').text)
print(pages)
if pages >100:
root.remove(i)

Слайд 22

Проход по дереву и обновление значений book=ElementTree.Element('book') number=ElementTree.SubElement(book,'number') year=ElementTree.SubElement(book,'year').set('year','2017') pages=ElementTree.SubElement(book,'pages').set('pages','100') number.set('pages','50') ElementTree.dump(book)

Проход по дереву и обновление значений

book=ElementTree.Element('book')
number=ElementTree.SubElement(book,'number')
year=ElementTree.SubElement(book,'year').set('year','2017')
pages=ElementTree.SubElement(book,'pages').set('pages','100')
number.set('pages','50')
ElementTree.dump(book)

Слайд 23

book=ElementTree.Element('book') number=ElementTree.SubElement(book,'number') year=ElementTree.SubElement(book,'year').set('year','2017') pages=ElementTree.SubElement(book,'pages').set('pages','100') number.set('pages','50') root.append(book)

book=ElementTree.Element('book')
number=ElementTree.SubElement(book,'number')
year=ElementTree.SubElement(book,'year').set('year','2017')
pages=ElementTree.SubElement(book,'pages').set('pages','100')
number.set('pages','50')
root.append(book)