如何基于 XML 文件创建 Python 对象?


XML(可扩展标记语言)是一种用于结构化、存储和在系统之间传输数据的标记语言。在某些情况下,我们需要使用 Python 语言读取/写入 XML 数据。

通过使用 untangle 库,我们可以基于 XML 文件创建 Python 对象。Untangle 是一个小型 Python 库,它将 XML 文档转换为 Python 对象。

Untangle 具有非常简单的 API。我们只需要调用 parse() 函数即可获取 Python 对象。

语法

untangle.parse(filename, **parser_features)

参数

  • 文件名:可以是 XML 字符串、XML 文件名或 URL

  • **解析器特性:传递给 parser.setFeature() 的作为特性值处理的额外参数。

返回值

该函数对其进行解析并返回一个 Python 对象,该对象表示给定的 XML 文档。

安装 Untangle 库

要使用 untangle.parse() 函数,我们需要先安装该库。通过使用以下命令,我们可以安装该库。

使用 pip 安装

pip install untangle

使用 anaconda 安装

conda install -c conda-forge untangle

示例

让我们以一个 XML 字符串为例,并创建 Python 对象。

xml = """<main>
<object1 attr="name">content</object1>
<object1 attr="foo">contenbar</object1>
<test>me</test>
</main>"""

import untangle
doc = untangle.parse(xml) # reading XML string data
obj1 = doc.main.object1
print(obj1)
print('-------------')
obj2 = doc.main.test
print(obj2)

输出

[Element(name = object1, attributes = {'attr': 'name'}, cdata = content), Element(name = object1, attributes = {'attr': 'foo'}, cdata = contenbar)]
-------------
Element <test> with attributes {}, children [] and cdata me

使用 untangle 库,我们已成功将 XML 数据转换为 Python 对象。以一个 XML 文件 (file.xml) 为例,并使用 untangle 模块将其转换为 Python 对象。XML 文件中的数据如下所示

<?xml version="1.0"?>
<root>
    <child name="child1"/>
</root>

现在,读取上述 xml 文件以创建一个 python 对象。

import untangle
obj = untangle.parse('path/to/file.xml')
obj.root.child['name'] 

在为 XML 数据创建 Python 对象后,我们可以像上面一样获取子元素。

输出

'child1'

示例

让我们来看一个现实世界的例子,从 Planet Python 的 RSS Feed 中提取文章标题及其 URL。

import untangle

xml = "https://planetpython.org/rss20.xml" 
obj = untangle.parse(xml) 

for item in obj.rss.channel.item:
    title = item.title.cdata
    link = item.link.cdata
    print(title)
    print('   ', link) 

输出

IslandT: Python Tutorial -- Chapter 4
    https://islandtropicaman.com/wp/2022/09/15/python-tutorial-chapter-4/
Tryton News: Debian integration packages for Tryton
    https://discuss.tryton.org/t/debian-integration-packages-for-tryton/5531
Python Does What?!: Mock Everything
    https://www.pythondoeswhat.com/2022/09/mock-everything.html
The Python Coding Blog: Functions in Python are Like a Coffee Machine
    https://thepythoncodingbook.com/2022/09/14/functions-in-python-are-like-coffee-machines/
Real Python: How to Replace a String in Python
    https://realpython.com/replace-string-python/
Python for Beginners: Select Row From a Dataframe in Python
    https://www.pythonforbeginners.com/basics/select-row-from-a-dataframe-in-python
PyCoder's Weekly: Issue #542 (Sept. 13, 2022)
    https://pycoders.com/issues/542 ……………………………

在此示例中,我们将 XML 数据的 URL 发送到 parse 函数,然后使用 for 循环迭代元素。

更新于: 2023年8月24日

1K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告