Могу ли я изменить поведение BeautifulSoup в отношении преобразования тегов XML в нижний регистр? - PullRequest
6 голосов
/ 21 мая 2009

Я работаю над кодом для разбора файла конфигурации, написанного на XML, где теги XML имеют смешанный регистр, а регистр имеет значение. Beautiful Soup по умолчанию конвертирует теги XML в нижний регистр, и я хотел бы изменить это поведение.

Я не первый, кто задает вопрос на эту тему [см. здесь ]. Однако я не понял ответа на этот вопрос, и в BeautifulSoup-3.1.0.1 BeautifulSoup.py, по-видимому, не содержит ни одного экземпляра «encodedName» или «Tag.__str__»

Ответы [ 4 ]

6 голосов
/ 22 мая 2009
import html5lib
from html5lib import treebuilders

f = open("mydocument.html")
parser = html5lib.XMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
document = parser.parse(f)

'document' теперь является деревом, подобным BeautifulSoup, но сохраняет регистры тегов. См. html5lib для документации и установки.

3 голосов
/ 25 мая 2009

По словам Леонарда Ричардсона, создателя / разработчика Beautiful Soup, вы не можете .

1 голос
/ 03 августа 2009

Гораздо лучше использовать lxml . Это намного, намного быстрее, чем BeautifulSoup. Он также имеет API совместимости для BeautifulSoup, если вы не хотите изучать lxml API.

Ян Бликинг соглашается .

Больше нет причин использовать BeautifulSoup, если только вы не работаете в Google App Engine или где-то, где не чисто Python не разрешен.

Он также больше подходит для XML.

0 голосов
/ 22 мая 2009

просто используйте расширенный xml-анализатор вместо библиотеки, созданной для работы с поврежденными файлами

Мне достаточно взглянуть на xml.etree или lxml

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