Ошибка пустого элемента в Beautiful Soup - PullRequest
2 голосов
/ 08 марта 2012

Я анализирую xml-файл с помощью Beautiful Soup, но обнаружил противоречивое поведение при разборе пустых элементов. * 1001 Т.е. *

from BeautifulSoup import BeautifulSoup
s1 = "<c><a /><b /></c>"
s2 = "<c><a></a><b></b></c>"
soup1 = BeautifulSoup(s1)
soup2 = BeautifulSoup(s2)
print soup1
# <c><a><b></b></a></c>
print soup2
# <c><a></a><b></b></c>

Обратите внимание, что тег b находится внутри тега a в первом случае, но не во втором. Я думал, что спецификация XML означает, что s1 и s2 эквивалентны?

Есть мысли о том, как я могу справиться с этим?

1 Ответ

1 голос
/ 08 марта 2012

Элементы привязки и полужирного (<a>, <b>) не могут быть закрыты самостоятельно, поэтому это недопустимый XHTML.

Кроме того, XHTML spec говорит, что пробел должен начинаться с косой черты:

Включить пробел перед завершающими / и> пустыми элементами, например,а такжеКарен,Кроме того, используйте минимизированный синтаксис тега для пустых элементов, например, поскольку альтернативный синтаксис
, разрешенный XML, дает неопределенные результаты во многих существующих пользовательских агентах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...