如何将XML元素的内容分别加载到Python列表?

时间:2019-05-05 04:09:21

标签: python python-2.7 beautifulsoup xml-parsing

我有一个名为“ config.xml”的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <set1>
    <data1> data content </data1>
    <data2> data content 2 </data2>
    <data3> data content 3</data3>
    <data4> data content 4 </data4>
 </set1>

 <set2>
    <data1> data content </data1>
    <data2> data content 2 </data2>
    <data3> data content 3</data3>
    <data4> data content 4 </data4>
 </set2>

在这里,我尝试获取set1的内容。假设我们无法确切说明set1数据标签名称中将包含哪些内容,并且该数量可能会不时发生变化,因为我将其用作应用程序的配置文件。我使用XML是因为set2也包含在XML文件中。但我想一次只读一套。

读取XML set1标签内容还可以,但是我需要像下面一样附加set1set2的内容。

 datalist = ['data content','data content 2','data content 3','data content 4']

如何使用BeautifulSoup4做到这一点?因为当我读取set1或其他集的内容时,我的代码同时给出了全部内容。没有分离。因此,我需要做一些额外的工作来分隔它们,例如"split""strip"

仅使用bs4怎么做?有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以找到相关标签(set1),然后提取其每个子标签的内容。

soup = bs4.BeautifulSoup(data, 'xml')
set1 = soup.find('set1')
[x.string.strip() for x in set1.children 
                  if type(x) == bs4.element.Tag]
#['data content', 'data content 2', 'data content 3', 'data content 4']