使用minidom来解析xml, 无法得到属性, 元素的xml也只显示结束标签?

我有一段非常简单的xml, 想尝试获得元素的属性值.

testing.xml代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<catalog>
   <aa value="first">this is the 1st.</aa>
   <aa value="second">this is the 2nd.</aa>
</catalog>

用来解析的python代码如下, 我在其中做了结果标记:

from xml.dom import minidom

with minidom.parse('c:/desktop/testing.xml') as dom:
    elements = dom.getElementsByTagName('aa')        

print(f'There are {len(elements)} items')              # 这个能正确的获得元素的数量

print(elements[1])                                     # 这个能打印类似这样的元素内存值: <DOM Element: aa at 0x2c864d264c0>
print(elements[1].nodeType)                            # 这个结果是1, 应该是element node
print(elements[1].toprettyxml(encoding='utf-8'))       # 这个结果是b'<aa/>\n', 按理说是应该显示<aa value="second">this is the 2nd.</aa>
print(elements[1].attributes['value'].value)           # 这个提示是 error, KeyError 'value', 照理说应该是显示 second?

我也查找了相关指引, 比如: https://stackoverflow.com/a/1...,
我几乎是原样按照这里介绍的方式做的,
但是在我这里就是错误的.

我的环境是 windows + python3.9.10 + VScode

不知我的代码哪里出错了? 如何才能获得xml元素的某个属性的值呢?

阅读 1.9k
1 个回答

把与 elements 有关的操作都移动到 with 语句块里面。

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