XML расшифровывается как Расширяемый язык разметки. Он был разработан для хранения и транспортировки данных. Он был разработан таким образом, чтобы его можно было читать как человеком, так и машиной. Вот почему цели дизайна XML подчеркивают простоту, универсальность и удобство использования в Интернете.
Примечание: Для получения дополнительной информации обратитесь к XML | Основы
Здесь мы считаем, что XML-файл присутствует в памяти. Пожалуйста, прочитайте комментарии в коде для ясного понимания.
XML-файл:
Давайте сохраним приведенный выше XML-файл как “test.xml”. Прежде чем идти дальше, вы должны знать, что в XML у нас нет предопределенных тегов, как в HTML. При написании XML автор должен определить свои собственные теги, а также структуру документа. Теперь нам нужно проанализировать этот файл и изменить его с помощью Python. Для выполнения вышеуказанной задачи мы будем использовать библиотеку “minidom” Python 3. Этот модуль не встроен в Python. Чтобы установить это, введите приведенную ниже команду в терминале.
pip install minidom
Чтение XML
Сначала мы прочитаем содержимое XML-файла, а затем узнаем, как изменить XML-файл.
Пример
import xml.dom.minidom as md
def main():
# parsing the xml file and
# storing the contents in
# "file" object Put in the
# path of your XML file in
# the parameter for parse() method.
file = md.parse( "test.xml" )
# nodeName returns the type of
# the file(in our case it returns
# document)
print( file.nodeName )
# firstChild.tagName returns the
# name of the first tag.Here it
# is "note"
print( file.firstChild.tagName )
firstname = file.getElementsByTagName( "fname" )
# printing the first name
print( "Name: " + firstname[ 0 ].firstChild.nodeValue )
lastname = file.getElementsByTagName( "lname" )
# printing the last name
print( "Surname: " + lastname[ 0 ].firstChild.nodeValue )
favgame = file.getElementsByTagName( "favgame" )
# printing the favourite game
print( "Favourite Game: " + favgame[ 0 ].firstChild.nodeValue )
# Printing tag values having
# attributes(Here tag "player"
# has "name" attribute)
players = file.getElementsByTagName( "player" )
for player in players:
print( player.getAttribute( "name" ) )
if __name__=="__main__":
main();
Выход:
#document
note
Name: Jack
Surname: Shelby
Favourite Game: Football
Messi
Ronaldo
Mbappe
В приведенном выше коде Python при печати First Name или Last Name мы использовали firstname[0] / lastname[0]. Это происходит потому, что существует только 1 “fname” и только 1 “lname”. Для несколько одинаковых тегов мы можем действовать, как показано ниже.
XML:
Python
import xml.dom.minidom as md
def main():
file = md.parse( "test.xml" )
names = file.getElementsByTagName( "fname" )
for name in names:
print( name.firstChild.nodeValue )
if __name__=="__main__":
main();
Выход:
Jack
John
Harry
Изменение XML
Теперь у нас есть основная идея о том, как мы можем анализировать и читать содержимое XML-файла с помощью Python. Теперь давайте научимся модифицировать XML-файл.
XML-файл:
Давайте добавим следующее :
- Height
- Языки, известные Jack
Позволь нам Удалить“хобби”. Также позвольте нам модифицировать возраст Для 29.
Код на Python:(Изменение XML)
import xml.dom.minidom as md
def main():
file = md.parse("test.xml")
height = file.createElement( "height" )
# setting height value to 180cm
height.setAttribute("val", "180 cm")
# adding height tag to the "file"
# object
file.firstChild.appendChild(height)
lan = [ "English", "Spanish", "French" ]
# creating separate "lang" tags for
# each language and adding it to
# "file" object
for l in lan:
lang = file.createElement( "lang" )
lang.setAttribute( "lng", l )
file.firstChild.appendChild( lang )
delete = file.getElementsByTagName( "hobby" )
# deleting all occurences of a particular
# tag(here "hobby")
for i in delete:
x = i.parentNode
x.removeChild( i )
# modifying the value of a tag(here "age")
file.getElementsByTagName( "age" )[ 0 ].childNodes[ 0 ].nodeValue = "29"
# writing the changes in "file" object to
# the "test.xml" file
with open( "test.xml", "w" ) as fs:
fs.write( file.toxml() )
fs.close()
if __name__=="__main__":
main();
Выход:
Последние 3 строки кода Python просто преобразуют объект “файл” в XML с помощью метода toxml() и записывают его в “test.xml” файл. Если вы не хотите редактировать исходный файл и просто хотите распечатать измененный XML, замените эти 3 строки на:
print(file.toxml())