Python BeautifulSoup 解析 XML
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")
相关文章