selfClosingTags в BeautifulSoup

Использование BeautifulSoup для анализа моего XML

import BeautifulSoup soup = BeautifulSoup.BeautifulStoneSoup( """<alan x="y" /><anne>hello</anne>""" ) # selfClosingTags=['alan']) print soup.prettify() 

Это приведет к выводу:

 <alan x="y"> <anne> hello </anne> </alan> 

т. е. тег anne является дочерним элементом тега alan.

Если я получу selfClosingTags = ['alan'], когда я создаю суп, я получаю:

 <alan x="y" /> <anne> hello </anne> 

Большой!

Мой вопрос: почему нельзя использовать /> для обозначения закрывающего тега?

2 Solutions collect form web for “selfClosingTags в BeautifulSoup”

Вы спрашиваете, что было в уме автора, отметив, что он дает имена как Beautiful [Stone] Soup для классов / модулей 🙂

Вот еще два примера поведения BeautifulStoneSoup:

 >>> soup = BeautifulSoup.BeautifulStoneSoup( """<alan x="y" ><anne>hello</anne>""" ) >>> print soup.prettify() <alan x="y"> <anne> hello </anne> </alan> >>> soup = BeautifulSoup.BeautifulStoneSoup( """<alan x="y" ><anne>hello</anne>""", selfClosingTags=['alan']) >>> print soup.prettify() <alan x="y" /> <anne> hello </anne> >>> 

Мой ответ: самозакрывающийся тег не является законным, если он не определен для синтаксического анализатора. Таким образом, у автора были варианты при принятии решения о том, как обрабатывать незаконный фрагмент, такой как <alan x="y" /> … (1) предположить, что ошибка / (2) рассматривала alan как самозакрывающийся тег, совершенно независимо от как он может быть использован в другом месте на входе (3), сделать 2 прохода над входным оребрением в первом проходе, как использовался каждый тег. Какой выбор вы предпочитаете?

У меня нет «почему», но это может вас заинтересовать. Если вы используете BeautifulSoup (no Stone) для синтаксического анализа XML с самозакрывающимся тегом, он работает. Вроде:

 >>> soup = BeautifulSoup.BeautifulSoup( """<alan x="y" /><anne>hello</anne>""" ) # selfClosingTags=['alan']) >>> print soup.prettify() <alan x="y"> </alan> <anne> hello </anne> 

Вложение правильное, даже если alan отображается как начало и конечный тег.

  • Как получить значение тега XML в Python
  • Фильтрация определенных байтов в python
  • Анализ XML в Python с использованием примера ElementTree
  • Parse updateinfo.xml
  • Каков самый быстрый способ анализа больших XML-документов в Python?
  • Почему elementtree.ElementTree.iterparse использует так много памяти?
  • получение определенного значения в <экземпляре типа>
  • Как предотвратить xml.ElementTree fromstring из dropdown commentnode
  • Как удалить Create and Edit ... из поля many2one.?
  • Node.toprettyxml () добавляет новые строки в DOCTYPE в Python
  • HTTP POST-запрос и заголовки с вложениями MIME multipart / related и xop?
  • Python - лучший язык программирования в мире.