How do I parse XML with attribute in python?
本问题已经有最佳答案,请猛点这里访问。
我有一个XML,它有许多行。对于特定的给定属性ID,应该查询元素名称和价格值。例如,我的树看起来像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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解析。我的代码是:
1 2 3 4 5 6 | 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': ???????????????????? |
无法检索名称和价格标签值。我查了很多例子,没有一个满意。
它奏效了。代码如下:
1 2 3 4 5 6 7 8 9 | 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 |
退房Etree’s the标准库。你觉得它allows Python对象到XML文件的一个elementtree into an。You can then this对象的各种在线呼叫的方法,
这会让你开始:P></
1 2 3 4 5 6 7 8 9 | 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) |
输出:P></
1 2 | Pesto Chicken Sandwich $7.50 |