我有一个格式不太好的 XML,标签名称内有连字符,我想用下划线替换它(以便能够与 lxml.objectify 一起使用)。我想替换所有标签名称,包括嵌套的子标签。
示例 XML:
<job>
<server>
<cpu-set>
</cpu-set>
</server>
<ip-routings>
</ip-routings>
</job>
我想以一种干净的方式(不使用正则表达式,但使用像 lxml 这样的 XML 库)将此 XML 转换为以下形式:
<job>
<server>
<cpu_set>
</cpu_set>
</server>
<ip_routings>
</ip_routings>
</job>
什么是Python式的、干净的方法来做到这一点?
使用 xpath 查找带有连字符的元素并重写标签:
from lxml import etree
data = """<job>
<server>
<cpu-set>
</cpu-set>
</server>
<ip-routings>
</ip-routings>
</job>"""
doc = etree.XML(data)
for e in doc.xpath('//*[contains(local-name(),"-")]'):
e.tag = e.tag.replace('-','_')
print etree.tostring(doc)
Yields:
<job>
<server>
<cpu_set>
</cpu_set>
</server>
<ip_routings>
</ip_routings>
</job>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)