gpt4 book ai didi

python - 如何仅在Python中根据属性在XML中查找(孙) child ?

转载 作者:行者123 更新时间:2023-12-03 03:00:19 30 4
gpt4 key购买 nike

file.xml 示例。

<root>
<child1 attrib='attrib1'>
</child1>

<child2 attrib='attrib1'>
</child2>

<child3 attrib='attrib2'>
</child3>

<child3 attrib='attrib3'>
</child3>
</root>

我更喜欢使用elementtree来解析。根节点获取为

tree=xml.etree.ElementTree.parse('file.xml')
root = tree.getroot()

要到达第一个 child3,我可以使用

root.findall(".//child3[@attrib='attrib2'])

但这基于我知道 child3 的标签名称的假设。

我有以下两个问题:

  1. 如果我不预先知道 child1child2 的标签名称,我怎样才能找到这两个 child ?一种单行命令 root.findall(".//[@attrib='attrib1']) 的方法似乎不起作用。
  2. 有没有办法使用变量来替换确切的属性名称?例如,如果我定义 attribVar='attrib',但 [@attribVar='attrib1'] 不起作用。

最佳答案

您可以使用

.//*[@attrib='attrib1'] 

选择具有attrib属性等于attrib1任何元素。

你可以使用

.//*[contains(@attrib,'attrib')] 

选择具有 attrib 属性的任何元素,该属性包含字符串'attrib'。这将匹配 attrib1attrib2(但也会匹配 mattribattribute)。

您可以使用字符串插值在 Python 中传递属性名称:

attributes = ['attrib1', 'attrib2', 'attrib3'];
for attr in attributes:
print root.findall(".//*[@attrib='{0}']".format(attr));

关于python - 如何仅在Python中根据属性在XML中查找(孙) child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24017149/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com