卡在 python 3.x 中的 lxml 和 xpath

stuck in lxml and xpath in python 3.x

我正在解析一个 arxml 文件以在 python 3.x 中从中提取数据,但我被卡住了,无法从以下代码中解脱出来。我根本不明白我错过了什么。 使用 xpath 我找到了我想要开始提取其所有子元素数据的子节点。我在在线测试器中测试了 xpath 表达式 (dataExpre3) 输出,它给我输出作为节点下的完整 xml 树。但是,同样的xpath表达式在python代码中只输出列表地址,并没有输出节点下的完整树。 非常感谢任何有关如何解析节点 ECUC-CONTAINER-VALUE 下的子元素的帮助。

from lxml import etree
arxmlFile = "D:/7_scripts/ArXmlParser/input/EcucValues.arxml"
tree = etree.parse(arxmlFile)
dataExpre3 = "//*[local-name() = 'SUB-CONTAINERS']/*[local-name() = 'ECUC-CONTAINER-VALUE'][1]"
subcontainers = tree.xpath(dataExpre3)
print(subcontainers)

python 中的输出是: [<元素 {http://autosar.org/schema/r4.0}ECUC-CONTAINER-VALUE at 0x28f8f26a1c0>]

xpath 测试器中的输出是完整的 xml 节点 ECUC-CONTAINER-VALUE 下的第一个子树。

此致,

您看到的是由 xpath() 选择的元素对象列表。

在这种情况下,它只是一个名为 {http://autosar.org/schema/r4.0}ECUC-CONTAINER-VALUE 的元素。这是 Clark 表示法中带有名称空间 uri 的全名。

如果你想打印序列化树,尝试(未测试):

print(etree.tostring(subcontainers[0]).decode())