<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Lion" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Tiger" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Name" />
<Game:Value Value="Leopard" />
</Game:quit>
<Game:quit>
<Game:DimensionSet AnimalSet="Name" />
<Game:Value Value="Elephant" />
</Game:quit>
<Game:quit>
<Game:AnimalSet AnimalSet="Place" />
<Game:Value Value="USA" />
这是我主要关注的sample.xml中的xml块。我想使用from xml.dom import minidom导入库以这种方式解析这个xml,如果条件和AnimalSet值是&#34; Name&#34;它将存储/附加其值为#14; Lion&#34;,&#34; Tiger&#34;,&#34; Leopard&#34;和&#34; elephant&#34;在一些清单中。 elif如果AnimalSet是&#34; Place&#34 ;,它应该存储/附加&#34; USA&#34;进入另一个名单。
我只是在开头只关注代码,如果有人帮我开始,我会非常感激。
有任何帮助吗?如果还有什么不清楚,请提出问题。感谢
答案 0 :(得分:0)
这看起来像XPath的任务,所以作为minidom的替代品,您可以使用ElementTree,其findall
方法可以找到具有Value
属性的所有元素。
import xml.etree.ElementTree as ET
doc = ET.parse(path_to_xml_file)
values = doc.findall('.//*[@Value]')
print [value.get('Value') for value in values]
对于Python 2.6.6,ElementTree无法查找属性,因此您必须使用其他内容。文件开头必须有xmlns:Game
伪属性;将其值复制到xmlns
变量中,然后尝试以下操作。
import xml.etree.ElementTree as ET
xmlns = # the value of xmlns:Game
doc = ET.parse(path)
values = doc.findall('.//Game:Value', namespaces={'Game': xmlns})
print [value.get('Value') for value in values]