gpt4 book ai didi

python - 如何使用元素树测试 XML 节点是否具有特定字符串

转载 作者:行者123 更新时间:2023-11-30 22:25:07 28 4
gpt4 key购买 nike

我目前正在使用元素树来解析一些 XML,其中一些具有多个重复的名称/值对,如下所示。我想做的是提取感兴趣的元素,即性别=男性和颜色=红色,但由于结构原因,我似乎无法单独使用 findall 来做到这一点。如何提取这些元素?我认为正确的逻辑是寻找一个子节点,在其中可以找到 child.text = 'gender' 等,然后继续打印该子节点的名称/值。最好的方法是什么?

<a:characteristic>
<name>gender</name>
<value>male</value>
</a:characteristic>
<a:characteristic>
<name>age</name>
<value>30</value>
</a:characteristic>
<a:characteristic>
<name>colour</name>
<value>red</value>
</a:characteristic>
<a:characteristic>
<name>language</name>
<value>python</value>
</a:characteristic>

最佳答案

我不会尝试处理 XML 文档结构来进行此类查询,而是会制作一个更方便的数据结构来基于此类特征进行查询 - 字典以特征名称作为键,特征值作为值

类似于:

import xml.etree.ElementTree as ET

data = """<root xmlns:a="http://www.w3.org/2002/07/a#">
<a:characteristic>
<name>gender</name>
<value>male</value>
</a:characteristic>
<a:characteristic>
<name>age</name>
<value>30</value>
</a:characteristic>
<a:characteristic>
<name>colour</name>
<value>red</value>
</a:characteristic>
<a:characteristic>
<name>language</name>
<value>python</value>
</a:characteristic>
</root>"""

namespaces = {'a': 'http://www.w3.org/2002/07/a#'}
root = ET.fromstring(data)
characteristics = {
item.findtext("name"): item.findtext("value")
for item in root.findall('a:characteristic', namespaces)
}
print(characteristics)

打印:

{'gender': 'male', 'age': '30', 'colour': 'red', 'language': 'python'}

现在,获取gender值就像characteristics['gender']一样简单。

关于python - 如何使用元素树测试 XML 节点是否具有特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626019/

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