元素树.findall返回非

2024-03-29 11:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在xml解析时找到所有的password属性,并将其替换为字符串“password”。为了找到password属性,我尝试了findall(),但它返回“None”。在

Python版本:python2.6

样本代码:

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
a= tree.parse("/home/xxxx/securityfile_test.xml")
z = tree.findall(".//password")
print z

谁能帮忙吗

示例xml

^{pr2}$

Tags: 字符串代码fromimport版本nonetree属性
2条回答

编辑:OP使用的是Python2.6,此答案仅适用于Python2.7+

参见elementtree documentation。在

要根据属性选择元素,需要使用不同的语法。如果使用:

z = tree.findall(".//*[@password]")

这会有用的。*表示“选择所有元素”,[@password]表示“带密码属性”。在

使用Python 2.7.12生成的XML文件的结果:

^{pr2}$

这将提取所需的元素,更新属性值并转储xml结果:

import xml.etree.ElementTree as Etree
tree = Etree.parse("file.xml")
root = tree.getroot()
print(root)
z = root.findall(".//*[@password]")
for elm in z:
    elm.attrib['password'] = "Password"
    print(Etree.dump(root))

我只能在2.7.12上进行测试,因为它是我唯一的python2版本。如果可以的话,我绝对会推荐你升级,但是如果你不能升级的话,这会给你一个正确的方向

相关问题 更多 >