Python BeautifulSoup 解析 XML

2023-04-17 00:00:00 python beautifulsoup 解析

Python的BeautifulSoup库可以非常方便地解析XML文件,并以树形结构方式来处理XML文档。以下是一个简单的演示代码:

from bs4 import BeautifulSoup

xml_str = '''<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
        <name>John Doe</name>
        <title>Manager</title>
    </employee>
    <employee>
        <name>Jane Doe</name>
        <title>Engineer</title>
    </employee>
</company>'''

soup = BeautifulSoup(xml_str, 'xml')

for employee in soup.find_all("employee"):
    name = employee.find("name").string
    title = employee.find("title").string
    print("Employee: {}, Title: {}".format(name, title))

输出结果:

Employee: John Doe, Title: Manager
Employee: Jane Doe, Title: Engineer

可以看到,我们首先使用了BeautifulSoup来解析XML字符串。在实例化BeautifulSoup对象时,我们指定了解析的类型为xml。BeautifulSoup使用了lxml库来解析XML文件,所以我们还需要使用pip安装lxml库。

接下来,我们使用find_all方法找到了所有的employee节点,并根据节点名称再找到了name和title节点。最后,我们通过string属性获取节点的文本内容,并打印出来。

需要注意的是,如果XML文档中包含命名空间,我们需要在使用节点名称时加上前缀,例如:

soup.find_all("ns:employee")

其中,ns是命名空间前缀。如果不知道命名空间前缀,可以通过soup.namespace属性获取默认命名空间的前缀,例如:

default_prefix = soup.namespace.prefix
soup.find_all(default_prefix + ":employee")

相关文章