我有一个如下所示的 xml 元素
<PI Name="MonitoredVariable">
<Reference Object="SomeName" />
</PI>
<PI Name = "Other Properties" />
<PI Name = "Other Properties" />
<PI Name = "Other Properties" />
我想抓取参考元素
当我尝试使用
抓取参考元素时ref = elem.find("./PI[@Name='MonitoredVariable']/Reference")
ref 最终为 None。
当我尝试使用
抓取参考元素时if superref := elem.find("./PI[@Name='MonitoredVariable']"):
ref = superref.find('Reference')
ref 最终成为正确的值。第二组代码更难理解,而且可能更慢,所以我更愿意找出为什么第一组代码不起作用。
您的问题不清楚,请编辑,您喜欢捕捉什么以及您的根标签看起来如何?
import xml.etree.ElementTree as ET
xml_s = """<root><PI Name="MonitoredVariable">
<Reference Object="SomeName" />
</PI>
<PI Name = "Other Properties" />
<PI Name = "Other Properties" />
<PI Name = "Other Properties" /></root>"""
tree = ET.fromstring(xml_s)
ref = tree.find(".//PI/Reference[@Object]")
print(ref.attrib['Object'])
输出:
SomeName