Пожалуйста, помогите мне разобрать файл конфигурации нижеприведенного прототипа, используя lxml etree. Я пытался с событием, элемент с tostring. К сожалению, мне не нужен текст, но XML между
<template name>
<config>
</template>
для данного атрибута.
Я начал с этого кода, но получил ошибку ключа при поиске атрибута, так как он сканирует с начала
config_tree = etree.iterparse(token_template_file)
for event, element in config_tree:
if element.attrib['name']=="ad auth":
print ("attrib reached. get XML before child ends")
Поскольку я новичок в XML и python, я не уверен, как это сделать. Вот файл конфигурации:
<Templates>
<template name="config1">
<request>
<password>pass</password>
<userName>username</userName>
<appID>someapp</appID>
</request>
</template>
<template name="config2">
<request>
<password>pass1</password>
<userName>username1</userName>
<appID>someapp</appID>
</request>
</template>
</Templates>
Заранее спасибо!
Ожидаемый результат:
Скажем, пользователь запрашивает config2 - тогда результат должен выглядеть следующим образом:
<request>
<password>pass1</password>
<userName>username1</userName>
<appID>someapp</appID>
</request>
(я отправляю этот XML с использованием httplib2 на сервер для первоначальной аутентификации)
ФИНАЛЬНЫЙ КОД:
благодаря ФК и Константину. Вот окончательный код:
config_tree = etree.parse(token_template_file)
for template in config_tree.iterfind("template"):
if template.get("name") == "config2":
element = etree.tostring(template.find("request"))
print (template.get("name"))
print (element)
выход:
config2
<request>
<password>pass1</password>
<userName>username1</userName>
<appID>someapp</appID>
</request>