根据同级的另一个子元素文本提取子元素中的文本
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 '}]
我是新手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 '}]