根据同级的另一个子元素文本提取子元素中的文本

Extract text in sub-element based on another sub-element text in the same level

我是新手XML,这个问题我想了很久...我想根据另一个元素中的另一个文本内容从元素中提取文本内容,具有相同的内容xml 文件中的同级名称 python:

这是 xml 的样子:

<element2>
<source> content1 </source>
<ref> content2 </ref>
</element2>

<element2>
<source> content3 </source>
<ref> content4 </ref>
</element2>

<element2>
....
</element2>
.
.
.

我想根据文本 "content1" 提取文本 "content2"。然而,如果我使用 iter() 或 child.tag,我无法精确定位我想要提取的文本。即使 child.find(content2) 也不起作用,因为有多个 "element2" 并且它只提取它找到的第一个 element2,但我有兴趣根据文本内容提取 <ref> 中的任何内容<source>。我想知道是否有任何建议的方法来提取像字典这样的文本?谢谢!

如果您只是想将 element2 包装器中包含的每个 source/ref 对值提取到字典列表中,您可以使用

import xml.etree.ElementTree as ET

xml = '''<root>
<element2>
<source> content1 </source>
<ref> content2 </ref>
</element2>

<element2>
<source> content3 </source>
<ref> content4 </ref>
</element2>
</root>'''

root = ET.fromstring(xml)

result = [ { 'source' : element2.find('source').text, 'ref' : element2.find('ref').text } for element2 in root.findall('.//element2')]

print(result)

这样你就会得到像

这样的结果
[{'source': ' content1 ', 'ref': ' content2 '}, {'source': ' content3 ', 'ref': ' content4 '}]