如何解决如何在 Python 中使用 Dom 库
大家好。我一直在尝试使用以下库读取 python 中的 xml 文件: xml.dom.minidom 并且出于某种原因调试器告诉我 dom 无法识别。你知道我应该怎么做才能使用这个库或者比它更好地将一个包含几个孩子的完整 xml 文件读入 python 吗?
谢谢!
解决方法
链接:
Reference on how to use xml.dom.minidom
您可以使用 parse(filename_or_file,parser=None,bufsize=None)
中的 xml.dom.minidom
函数从 xml 文件中提取 xml 数据
test_data.xml
的内容:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
代码:
from xml.dom.minidom import parse
tree = parse('test_data.xml').documentElement
countries = tree.getElementsByTagName('country')
for country in countries:
print(f"Country name: {country.getAttribute('name')}")
rank = country.getElementsByTagName('rank')[0].childNodes[0].data
neighbors = []
for neighbor in country.getElementsByTagName('neighbor'):
neighbors.append(dict(name=neighbor.getAttribute('name'),direction=neighbor.getAttribute('direction')))
print(f"Country rank: {rank}")
print(f"Neighbors: {neighbors}")
print()
输出:
Country name: Liechtenstein
Country rank: 1
Neighbors: [{'name': 'Austria','direction': 'E'},{'name': 'Switzerland','direction': 'W'}]
Country name: Singapore
Country rank: 4
Neighbors: [{'name': 'Malaysia','direction': 'N'}]
Country name: Panama
Country rank: 68
Neighbors: [{'name': 'Costa Rica','direction': 'W'},{'name': 'Colombia','direction': 'E'}]
我更喜欢使用 xml.etree.ElementTree
来解析 xml 文件,因为我发现它比使用 xml.dom.minidom
容易得多
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。