XML 树 - 仅当主标签具有特定 属性 值时才提取子标签值
XML tree - extract the subtags values only if the main tag has a certain property value
我是 XML 的新手,正在研究解析器,让我先说明一下我的问题:
<animals>
<pet type="dog">
<name>Jack</name>
<name>Benny</name>
<name>Will</name>
</pet>
<pet type="cat">
<name>Luna</name>
<name>Lilith</name>
<name>Willow</name>
</pet>
<pet type="rabbit">
<name>Lilly</name>
<name>Robin</name>
</pet>
</animals>
我只想从这棵树中提取狗的名字(Jack、Benny、Will)。
我试过:
name = file.getElementsByTagName('name')
pets = file.getElementsByTagName('pet')
for i in pets:
if (i.attributes['type'].value == "dog"):
for j in name:
print(j.firstChild.data)
我得到了所有的名字,因为我正在使用整个宠物子集。我的问题是如何表明我想明确 select 标签并循环遍历它以仅获取 3 个名称。
我想坚持 xml.dom.minidom 而不是使用元素树。
提前致谢!
希望对您有所帮助:
from xml.dom.minidom import parseString
xml_string = '''
<animals>
<pet type="dog">
<name>Jack</name>
<name>Benny</name>
<name>Will</name>
</pet>
<pet type="cat">
<name>Luna</name>
<name>Lilith</name>
<name>Willow</name>
</pet>
<pet type="rabbit">
<name>Lilly</name>
<name>Robin</name>
</pet>
</animals>
'''
root = parseString(xml_string)
for pet in root.getElementsByTagName('pet'):
if pet.attributes['type'].value == 'dog':
names = pet.getElementsByTagName('name')
print([name.firstChild.data for name in names])
输出:
['Jack', 'Benny', 'Will']
我是 XML 的新手,正在研究解析器,让我先说明一下我的问题:
<animals>
<pet type="dog">
<name>Jack</name>
<name>Benny</name>
<name>Will</name>
</pet>
<pet type="cat">
<name>Luna</name>
<name>Lilith</name>
<name>Willow</name>
</pet>
<pet type="rabbit">
<name>Lilly</name>
<name>Robin</name>
</pet>
</animals>
我只想从这棵树中提取狗的名字(Jack、Benny、Will)。 我试过:
name = file.getElementsByTagName('name')
pets = file.getElementsByTagName('pet')
for i in pets:
if (i.attributes['type'].value == "dog"):
for j in name:
print(j.firstChild.data)
我得到了所有的名字,因为我正在使用整个宠物子集。我的问题是如何表明我想明确 select 标签并循环遍历它以仅获取 3 个名称。 我想坚持 xml.dom.minidom 而不是使用元素树。 提前致谢!
希望对您有所帮助:
from xml.dom.minidom import parseString
xml_string = '''
<animals>
<pet type="dog">
<name>Jack</name>
<name>Benny</name>
<name>Will</name>
</pet>
<pet type="cat">
<name>Luna</name>
<name>Lilith</name>
<name>Willow</name>
</pet>
<pet type="rabbit">
<name>Lilly</name>
<name>Robin</name>
</pet>
</animals>
'''
root = parseString(xml_string)
for pet in root.getElementsByTagName('pet'):
if pet.attributes['type'].value == 'dog':
names = pet.getElementsByTagName('name')
print([name.firstChild.data for name in names])
输出:
['Jack', 'Benny', 'Will']