Может ли BeautifulSoup анализировать xml, когда определенный тег является самозакрывающимся и не в то же время

Ситуация следующая.

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 ест следующий тег (если он еще не тег1), потому что по умолчанию не поддерживается самозакрывающихся тегов. во втором случае самозакрывающийся тег не поддерживает дочерние теги.

Я просто хочу, чтобы структура была оригинальным XML-документом. Возможно ли это с помощью BeautifulSoup? И если это возможно, то как сделать все теги самозакрывающимися по умолчанию? Существует много xml-файлов, и я не хочу искать все такие ситуации вручную.

2 Solutions collect form web for “Может ли BeautifulSoup анализировать xml, когда определенный тег является самозакрывающимся и не в то же время”

Я бы не рекомендовал BeautifulSoup (даже для разбора HTML). Используйте ElementTree из стандартной библиотеки или lxml , если вам нужна более мощная библиотека XML.

Вы можете сказать BeautifulSoup 4 («bs4») использовать другой парсер (например, lxml), указав его в конструкторе. Я бы полностью избегал более ранних версий и избегал использования парсера по умолчанию с помощью bs4 (например, он не справлялся с пропущенными конечными тегами правильно).

  • Удаление дочерних элементов в XML с помощью python
  • python - как писать пустой узел дерева как пустую строку в файл xml
  • Добавление фильтра по умолчанию в древовидном представлении - пользовательский модуль OpenErp
  • Получить список значений атрибутов XML в Python
  • Как получить lxml, работающий под IronPython?
  • лучший способ конвертировать этот html-файл в xml-файл с помощью python
  • Parse xml с lxml - значение элемента extract
  • Каков самый быстрый способ анализа больших XML-документов в Python?
  • Python - лучший язык программирования в мире.