Я пишу текстовую приключенческую игру и хочу сохранить местоположения и предметы, которые игрок может подобрать в каждом месте, в файле XML.Игра должна прочитать файл XML и создать объекты местоположения, которые содержат объекты предметов, а также другие атрибуты этого местоположения.
Я уже опробовал следующие два учебника, изменив их код в соответствии со своими потребностями: https://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree https://www.tutorialspoint.com/python/python_xml_processing.htm
Ниже приведен XML-файл:
<locations>
<location id="0">
<descr>"You are in a hallway in the front part of the house. There is the front door to the north and rooms to the east and to the west. The hallway stretches back to the south."</descr>
<exits>"N,W,S,E""</exits>
<neighbors>"1,2,3,4"</neighbors>
<item itemId="2">
<name>"rusty key"</name>
<description>this key looks old</description>
<movable>true</movable>
<edible>false</edible>
</item>
<item itemId="1">
<name>"hat"</name>
<description>An old hat</description>
<movable>true</movable>
<edible>false</edible>
</item>
</location>
<location itemId="1">
<descr>"You are in the front yard of a brick house. The house is south of you and there is a road leading west and east."</descr>
<exits>"S"</exits>
<neighbors>"0"</neighbors>
<item itemId="3">
<name>"newspaper"</name>
<description>today's newspaper</description>
<movable>true</movable>
<edible>false</edible>
</item>
</location>
Сейчас я просто пытаюсь распечатать различные атрибуты.Как только я узнаю, как получить к ним доступ, проще всего будет поместить их в конструктор для создания объектов.Вот код, который у меня есть до сих пор.Я могу легко получить доступ ко всем атрибутам узлов местоположения, но могу получить доступ только к идентификатору каждого элемента.Я не знаю, как получить доступ к другим атрибутам, таким как имя, описание и т. Д.
import xml.etree.ElementTree as ET
tree = ET.parse('gamefile.xml')
root = tree.getroot()
for x in range(0,len(root)):
print("description: "+root[x][0].text)
print("exits: "+root[x][1].text)
print("neighbors: "+root[x][2].text)
for child in root[x]:
if child.tag =='item':
print(child.attrib)