Синтаксический анализ xml с использованием импорта minidom с условиями if
<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Lion" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Tiger" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Leopard" />
</Game:quit>
<Game:quit>
<Game:DimensionSet AnimalSet="Name" />
<Game:Value Value="Elephant" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Place" />
<Game:Value Value="USA" />
Это кусок xml из моего sample.xml, который меня больше всего интересует. Я хочу проанализировать этот xml таким образом, используя библиотеку импорта minidom import из xml.dom, которую я запускаю, если условия и если значение AnimalSet равно "Name", оно будет сохранять / добавлять свои значения, которые являются "Lion", "Tiger". "," Леопард "и" Слон "в каком-то списке. elif, если AnimalSet имеет значение "Поместить", он должен сохранить / добавить "США" в другой список.
Я застрял в коде только в начале, поэтому буду очень признателен, если кто-нибудь поможет мне начать с него.
Любая помощь? Пожалуйста, задавайте вопросы, если еще что-то не понятно Спасибо
1 ответ
Это похоже на миссию для XPath, поэтому в качестве альтернативы минидому вы можете использовать ElementTree, чей findall
Метод может найти все элементы с Value
приписывать.
import xml.etree.ElementTree as ET
doc = ET.parse(path_to_xml_file)
values = doc.findall('.//*[@Value]')
print [value.get('Value') for value in values]
Для Python 2.6.6 ElementTree не может искать атрибуты, поэтому вы должны использовать что-то еще. Там должно быть xmlns:Game
псевдоатрибут в начале файла; скопировать его значение в xmlns
переменная, и попробуйте следующее.
import xml.etree.ElementTree as ET
xmlns = # the value of xmlns:Game
doc = ET.parse(path)
values = doc.findall('.//Game:Value', namespaces={'Game': xmlns})
print [value.get('Value') for value in values]