Как загрузить содержимое элементов XML отдельно в список Python? - PullRequest
0 голосов
/ 05 мая 2019

У меня есть XML-файл с именем 'config.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.но я хочу прочитать только 1 комплект за один раз.

XML set1 чтение содержимого тега в порядке, все работает нормально, но мне нужно добавить содержимое set1 или set2, как показано ниже.

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

Как я могу это сделатьчто с BeautifulSoup4?Потому что когда я читаю содержимое set1 или другого набора, мой код выдает все содержимое одновременно.нет разделения.Поэтому мне нужно проделать дополнительную работу, чтобы разделить их, как "split", "strip".

Как это можно сделать с единственным bs4?Возможно ли это?

1 Ответ

1 голос
/ 05 мая 2019

Вы можете найти рассматриваемый тег (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']
...