python - 使用 Python 使用属性名称按路径搜索元素并替换 xml 中的值
问题描述
如何使用 Python 为元素提供具有属性值的完整路径并替换 xml 中的元素值
例如:我有这样的 xml 文件:
<bw>
<bwprocesses>
<bwprocess name="Business_Processes/Source_Processes/Receive Batch Message.process">
<starter>Receive Batch Message</starter>
</bwprocess>
<bwprocess name="Business_Processes/Source_Processes/Type Subscriber.process">
<starter>Receive Trade Message</starter>
</bwprocess>
<bwprocess name="Business_Processes/Source_Processes/Message Router.process">
<starter>Message JMS Queue Receiver</starter>
</bwprocess>
</bwprocesses>
</bw>
并希望通过提供需要更新的完整元素路径(带有属性值)来更新 xml。
输入:bwprocesses/bwprocess [Business_Processes/Source_Processes/Receive Batch Message.process]/starter = new Massage(新值应更新以代替 .xml 中的“Receive Batch Message”)
我尝试使用 xml.etree.ElementTree 搜索示例,但找不到任何有用的信息。尝试使用下面的代码搜索元素但出现错误。请帮助解决。
import xml.etree.ElementTree as ET
tree = ET.parse('a.xml')
root = tree.getroot()
for e in root.findall('bwprocesses/bwprocess[@name='Business_Processes/Source_Processes/Receive Batch Message.process']/starter'):
print e.text
解决方案
见下文
import xml.etree.ElementTree as ET
xml = '''<bw>
<bwprocesses>
<bwprocess name="Business_Processes/Source_Processes/Receive Batch Message.process">
<starter>Receive Batch Message</starter>
</bwprocess>
<bwprocess name="Business_Processes/Source_Processes/Type Subscriber.process">
<starter>Receive Trade Message</starter>
</bwprocess>
<bwprocess name="Business_Processes/Source_Processes/Message Router.process">
<starter>Message JMS Queue Receiver</starter>
</bwprocess>
</bwprocesses>
</bw>'''
root = ET.fromstring(xml)
for e in root.findall("bwprocesses/bwprocess[@name='Business_Processes/Source_Processes/Receive Batch Message.process']/starter"):
print('Before: {}'.format(e.text))
e.text = 'Any text you want'
for e in root.findall("bwprocesses/bwprocess[@name='Business_Processes/Source_Processes/Receive Batch Message.process']/starter"):
print('After: {}'.format(e.text))
推荐阅读
- python - python中的二维列表出现错误,因为“名称'网站'未定义”
- actions-on-google - 这是运行时类型覆盖部分的 Google Actions 文档中的错误吗?
- c# - SharpDX XAudio2 no Sound 带效果参数
- angular - 使用 jest 时的角度配置
- reactjs - 是否可以在 TypeScript 上创建一个允许灵活数量/类型的键的对象接口?
- javascript - 如何为滚动播放的两个图像交叉淡入淡出动画
- python - ValueError:在读取 json 文件时解码“字符串”时未配对的高代理项
- macos - MacOS 钥匙串:为什么远程运行命令“security list-keychains”时没有列出所有用户的钥匙串
- java - 使用 Java Fx,在创建搜索过滤器时搜索整数值的最佳方法是什么?
- python - 用beautifulsoup 抓取巴士站