2015-07-21 2 views
7

Я пытаюсь очистить XML-файл с помощью BeautifulSoup 4.4.0 с именами тегов в camelCase, и find_all, похоже, не может их найти. Пример кода:find_all с именами тегов camelCase с BeautifulSoup 4

from bs4 import BeautifulSoup 

xml = """ 
<hello> 
    world 
</hello> 
""" 
soup = BeautifulSoup(xml, "lxml") 

for x in soup.find_all("hello"): 
    print x 

xml2 = """ 
<helloWorld> 
    :-) 
</helloWorld> 
""" 
soup = BeautifulSoup(xml2, "lxml") 

for x in soup.find_all("helloWorld"): 
    print x 

Выход я получаю:

$ python soup_test.py 
<hello> 
    world 
</hello> 

Что такое правильный способ смотреть на верблюда накладного/верхний регистр имен тегов?

ответ

6

Для любого синтаксического анализа с использованием BeautifulSoup вы должны проанализировать режим "xml". Режим по умолчанию (разбор HTML) не заботится о случае, так как HTML не заботится о случае. В вашем случае вместо использования режима "lxml" переключите его на "xml":

from bs4 import BeautifulSoup 

xml2 = """ 
<helloWorld> 
    :-) 
</helloWorld> 
""" 
soup = BeautifulSoup(xml2, "xml") 

for x in soup.find_all("helloWorld"): 
    print x 
Смежные вопросы