[英]can we search multiple pattern using etree findall() in xml?
对于我的情况,我必须在 XML 文件中找到几个元素并使用text
属性更新它们的值。 为此,我必须搜索 xml 元素 A、B 和 C。 我的项目使用 xml.etree 和 python 语言。 目前我正在使用:
self.get_root.findall(H/A/T)
self.get_root.findall(H/B/T)
self.get_root.findall(H/C/T)
示例 XML 文件:
<H><A><T>text-i-have-to-update</H></A></T>
<H><B><T>text-i-have-to-update</H></B></T>
<H><C><T>text-i-have-to-update</H></C></T>
我们可以注意到,只有路径中的中间元素不同。 有没有办法使用self.get_root.findall(H|(A,B,C)|T)
来优化代码? 任何正确方向的指导都可以! 谢谢!
我遇到了类似的问题: XPath 到 select 多个标签,但它不适用于我的情况
更新:也许 findall() 中的正则表达式?
您问题中的 html 格式不正确; 假设它的格式正确(如下所示),试试这个:
import xml.etree.ElementTree as ET
data = """<root>
<H><A><T>text-i-have-to-update</T></A></H>
<H><B><T>text-i-have-to-update</T></B></H>
<H><C><T>text-i-have-to-update</T></C></H>
</root>"""
doc = ET.fromstring(data)
for item in doc.findall('.//H//T'):
item.text = "modified text"
print(ET.tostring(doc).decode())
Output:
<root>
<H><A><T>modified text</T></A></H>
<H><B><T>modified text</T></B></H>
<H><C><T>modified text</T></C></H>
</root>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.