Ситуация, подобная следующей.
XML-файл:
<tag1/>
<tag2>some_data</tag2>
<tag1>some_another_data</tag1>
tag1 иногда самозакрывающийся и иногда содержит данные внутри.
Код:
from BeautifulSoup import BeautifulStoneSoup
s = '<tag1/><tag2>some_data</tag2><tag1>some_another_data</tag1>'
soup1 = BeautifulStoneSoup(s)
soup2 = BeautifulStoneSoup(s, selfClosingTags=["tag1"])
print soup1.prettify()
print
print soup2.prettify()
выход:
<tag1>
<tag2>
some_data
</tag2>
</tag1>
<tag1>
some_another_data
</tag1>
<tag1 />
<tag2>
some_data
</tag2>
<tag1 />
some_another_data
В первом случае tag1 съедает следующий тег (если он снова не tag1), поскольку по умолчанию нет поддержки самозакрывающихся тегов.
во втором случае самозакрывающийся тег не поддерживает дочерние теги.
Я просто хочу получить структуру как оригинальный документ XML. Возможно ли это с BeautifulSoup? И если это возможно, то как сделать все теги самозакрывающимися по умолчанию? Существует множество XML-файлов, и я не хочу искать все подобные ситуации вручную.