2012-07-26 36 views
5

Tôi đang gặp một số sự cố khi sử dụng thư viện Python 2.6.5 xml.etree.ElementTree. Đặc biệt, nếu tôi thiết lập một yếu tố xml đơn giản như sauHành vi Boolean không mong đợi của các phần tử xml.etree.ElementTree của Python

>>> import xml.etree.ElementTree as etree 
>>> xml = etree.fromstring("<a><b><c>xy</c></b></a>") 

tôi không có vấn đề với thư viện khi truy cập vào các nút yếu tố nội tại, ví dụ:

>>> etree.tostring(xml.find('b')) 
'<b><c>xy</c></b>' 
>>> xml.find('b') == None 
False 
>>> bool(xml.find('b')) 
True 

Tuy nhiên, tôi đang gặp phải một lạ giải thích boolean của nút phần tử lá, xem:

>>> etree.tostring(xml.find('b/c')) 
'<c>xy</c>' 
>>> xml.find('b/c') == None 
False 
>>> bool(xml.find('b/c')) 
False 

Lưu ý rằng trong câu lệnh cuối cùng, yếu tố xml.find ('b/c') , rõ ràng là không có Không, đánh giá thành False. Điều này đặc biệt khó chịu vì tôi không thể sử dụng thành ngữ

>>> leaf = xml.find('b/c'): 
>>> if leaf: 
>>>  do_stuff(leaf) 

để kiểm tra xem phần tử lá có tồn tại hay không. (Tôi phải kiểm tra rõ ràng cho 'xml.find (' b/c ')! = None'.)

Ai đó có thể giải thích hành vi này (đối với tôi bất ngờ)?

+0

Phụ lục: Tôi không yêu cầu các thư viện Python khác xử lý xml, tôi chỉ muốn hiểu hành vi của gói thư viện đã cho. – MRA

Trả lời

Các vấn đề liên quan