我有一个xml,它有很多行。对于特定的给定属性id,应查询元素名称和价格值。例如,我的树看起来像:
<menu>
<food id="1">
<name>Pesto Chicken Sandwich</name>
<price>$7.50</price>
</food>
<food id="2">
<name>Chipotle Chicken Pizza</name>
<price>$12.00</price>
</food>
<food id="3">
<name>Burrito</name>
<price>$6.20</price>
</food>
</menu>
如何获取特定ID(1或2或3)的名称和价格值?
我尝试使用minidom进行解析。我的代码是:
from xml.dom import minidom
xmldoc = minidom.parse('D:/test.xml')
nodes = xmldoc.getElementsByTagName('food')
for node in nodes:
if node.attributes['id'].value == '1':
????????????????????
我无法检索名称和价格标签值。我检查了很多例子,没有人满意。
工作了。代码如下:
import xml.etree.ElementTree as ET
tree = ET.parse('D:/test.xml')
root = tree.getroot()
for child in root:
testing = child.get('id')
if testing == '3':
print child.tag, child.attrib
print child.find('name').text
print child.find('price').text
答案 0 :(得分:1)
查看标准etree library。它允许您将xml文件解析为名为ElementTree的Python对象。然后,您可以在此对象上调用各种方法,例如.findall("./food/name").
这可能会让你开始:
import xml.etree.ElementTree as ET
tree = ET.parse('D:/test.xml')
root = tree.getroot()
def get_info(food_id):
for child in root.findall("*[@id='{0}']//".format(food_id)):
print(child.text)
get_info(1)
输出:
Pesto Chicken Sandwich
$7.50