微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Python 中使用 Dom 库

如何解决如何在 Python 中使用 Dom 库

大家好。我一直在尝试使用以下库读取 python 中的 xml 文件: xml.dom.minidom 并且出于某种原因调试器告诉我 dom 无法识别。你知道我应该怎么做才能使用这个库或者比它更好地将一个包含几个孩子的完整 xml 文件读入 python 吗?

谢谢!

解决方法

链接:

Data for test_data.xml

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 容易得多

Reference on how to use xml.etree.Elementree

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?