2012-04-11 23 views
7

'da bir özniteliğin var olup olmadığını test etme lxml aracılığıyla python'da ayrıştırdığım bazı XML'ler var.Bazı XML

Bazı öğelerin özniteliklere sahip olduğu ve bazılarının bulunmadığı durumlarla karşılaşıyorum.

ben varsa bunları ayıklamak, ancak isterlerse onları atlamak gerekir

değil - (yaklaşımım yanlış olarak ...) Şu anda,

Bir testfornull dağıtmış olan hataları ile iniyorum ama o her durumda çalışmaz:

Kodu:

if root[0][a][b].attrib == '<>': 
ByteSeqReference = "NULL" 
else: 
ByteSeqReference = (attributes["Reference"]) 

XML A:

<ByteSequence Reference="BOFoffset"> 

XML B:

<ByteSequence Endianness = "little-endian" Reference="BOFoffset"> 

XML C:

<ByteSequence Endianness = "little-endian"> 

XML D:

<ByteSequence> 

yalnızca A, B veya D O başa çıkabilirim Benim şu anki yöntem C ile başa çıkamaz

cevap

17

Sık sık var olmayacak bir öznitelik üzerinde null değerler için bir sınamanın çalıştığını şaşırıyorum ever - Yaptığın bu boş olmasın, o var olup olmadığını kontrol ediyor olması gereken:

if 'Reference' in current_element.attrib: 
    ...do something with it... 
+0

Ahhh. işte böyle çalışır. (Ben de şaşırdım ....). Zaman ayırdığınız için teşekkür ederim. Bu tamamen düzeltir. – Jay