如何解析 XML 并获取特定节点属性的实例?

新手上路,请多包涵

我在 XML 中有很多行,我正在尝试获取特定节点属性的实例。

 <foo>
   <bar>
      <type foobar="1"/>
      <type foobar="2"/>
   </bar>
</foo>

如何访问属性值 foobar ?在这个例子中,我想要 "1""2"

原文由 randombits 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 266
2 个回答

我建议 ElementTree 。在 Python 标准库本身中还有其他相同 API 的兼容实现,例如 lxmlcElementTree ;但是,在这种情况下,他们主要添加的是更快的速度——编程部分的易用性取决于 API,它定义了 ElementTree

首先从 XML 构建一个 Element 实例 root ,例如使用 XML 函数,或者通过使用类似以下内容解析文件:

 import xml.etree.ElementTree as ET
root = ET.parse('thefile.xml').getroot()

或者 ElementTree 中显示的许多其他方式中的任何一种。然后做类似的事情:

 for type_tag in root.findall('bar/type'):
    value = type_tag.get('foobar')
    print(value)

输出:

 1
2

原文由 Alex Martelli 发布,翻译遵循 CC BY-SA 4.0 许可协议

minidom 是最快且非常直接的。

XML:

 <data>
    <items>
        <item name="item1"></item>
        <item name="item2"></item>
        <item name="item3"></item>
        <item name="item4"></item>
    </items>
</data>

Python:

 from xml.dom import minidom

dom = minidom.parse('items.xml')
elements = dom.getElementsByTagName('item')

print(f"There are {len(elements)} items:")

for element in elements:
    print(element.attributes['name'].value)

输出:

 There are 4 items:
item1
item2
item3
item4

原文由 Ryan Christensen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题