我正在创建一个脚本来清理我需要加载的XML文件中的标签和属性。
结构示例:
<Cli TipCli="1" NmCli="client_name">
<EndEtnCli EmaiCli="client_email"/>
</Cli>
如果属性EmailCli
为空,我想删除整个标签<EndEtnCli/>
。
我已经在这里关注了一些教程,并在下面的代码中找到了它,它没有显示任何错误,但是它根本不起作用。
我想念什么?
import xml.etree.ElementTree as ET
from datetime import date
tree = ET.parse('src/021/sample.xml')
root = tree.getroot()
for client in root:
# sanitize email from client
el = client.find('EndEtnCli')
if el.attrib.get('EmaiCli') == '': client.remove(el)
currentDate = date.today().strftime('%Y%m%d')
tree.write(f'src/021/test_{ currentDate }', encoding="utf-8")
下
import xml.etree.ElementTree as ET
xml = '''<r>
<Cli TipCli="1" NmCli="client_name1">
<EndEtnCli EmaiCli=""/>
</Cli>
<Cli TipCli="2" NmCli="client_name2">
<EndEtnCli/>
</Cli>
<Cli TipCli="3" NmCli="client_name3">
<EndEtnCli EmaiCli="client_email"/>
</Cli>
</r>'''
root = ET.fromstring(xml)
cli_lst = root.findall('.//Cli')
for cli in cli_lst:
child = cli.find('./EndEtnCli')
email_cli = child.attrib.get('EmaiCli')
if email_cli is None or len(email_cli) == 0:
cli.remove(child)
ET.dump(root)
输出
<r>
<Cli NmCli="client_name1" TipCli="1">
</Cli>
<Cli NmCli="client_name2" TipCli="2">
</Cli>
<Cli NmCli="client_name3" TipCli="3">
<EndEtnCli EmaiCli="client_email" />
</Cli>
</r>