Python xml перебирает вопросы и отвечает

У меня есть ответы на опрос, хранящиеся в xml, и, к сожалению, xml не является равномерно построенным. См. Ниже xml.

Я хотел бы перебрать divs и затем вытащить все элементы в качестве вопросов, но я не уверен, как справляться с ответами, поскольку они иногда включаются в sub

, а иногда и нет.

Я думал об использовании элементарного интертекста или прекрасного супа. Но BeautifulSoup возвращает все divs, включая внутренние, если я делаю soup.find_all('div'). tree.itertext() вид работ, но я не хочу иметь слишком много вложенных петель, если это возможно.

Любые предложения, как лучше всего справиться с этой ситуацией?

<div>
 <b>Question 1: What is your name?</b>
 My name is Peter.
 </div>
 <div>
 <b>Question 2: What is your native language?</b>
 <div>Esperanto</div>
 </div>
1 ответ

Итерации над верхними слоями div, извлеките текст вопроса из тега b, извлеките ответ из следующего родного брата или из текста следующего брата следующего брата:

from bs4 import BeautifulSoup
soup = BeautifulSoup("""

 
 <div>
 <b>Question 1: What is your name?</b>
 My name is Peter.
 </div>
 <div>
 <b>Question 2: What is your native language?</b>
 <div>Esperanto</div>
 </div>
 

""")
for div in soup.find('body').findAll('div', recursive=False):
 question = div.find('b')
 print question.text
 print question.nextSibling.strip() or question.nextSibling.nextSibling.text.strip()

печатает:

Question 1: What is your name?
My name is Peter.
Question 2: What is your native language?
Esperanto

licensed under cc by-sa 3.0 with attribution.