Python ETree.find 未找到复杂路径

问题描述 投票:0回答:1

我有一个如下所示的 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 最终成为正确的值。第二组代码更难理解,而且可能更慢,所以我更愿意找出为什么第一组代码不起作用。

python xml elementtree
1个回答
0
投票

您的问题不清楚,请编辑,您喜欢捕捉什么以及您的根标签看起来如何?

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
© www.soinside.com 2019 - 2024. All rights reserved.