请帮助我使用 lxml etree 解析以下原型的配置文件。我尝试使用 for 事件,使用 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>
(我使用 httplib2 将此 XML 发送到服务器进行初始身份验证)
最终代码:
感谢 FC 和 Constantnius。这是最终代码:
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>