2015-07-21 13 views
7

Tôi đang cố gắng để xóa một tệp xml với BeautifulSoup 4.4.0 có tên thẻ trong camelCase và find_all dường như không thể tìm thấy chúng. mã ví dụ:find_all with camelTên thẻ tên với 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 

Kết quả tôi nhận được là:

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

cách chính xác để nhìn lên lạc đà cased/tên thẻ uppercased là gì?

Trả lời

6

Đối với mọi phân tích cú pháp phân biệt chữ hoa chữ thường bằng BeautifulSoup, bạn sẽ muốn phân tích cú pháp ở chế độ "xml". Chế độ mặc định (phân tích HTML) không quan tâm đến trường hợp, vì HTML không quan tâm đến trường hợp. Trong trường hợp của bạn, thay vì sử dụng chế độ "lxml", hãy chuyển sang chế độ "xml":

from bs4 import BeautifulSoup 

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

for x in soup.find_all("helloWorld"): 
    print x 
Các vấn đề liên quan