2012-04-11 13 views
7

Mam niektóre XML, które parsuję w Pythona za pomocą lxml.Jak przetestować, czy atrybut istnieje w niektórych XML

Zdaję sobie sprawę, że niektóre elementy mają atrybuty, a niektóre nie.

I trzeba wyodrębnić je, jeśli one istnieją, ale pominąć je, jeśli nie - Jestem obecnie lądowania z błędami (jak moje podejście jest nie tak ...)

Mam wdrożyła testfornull, ale że nie działa we wszystkich przypadkach:

Kod:

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> 

Moja obecna metoda może zajmować się tylko A, B lub D. nie może poradzić sobie z C

Odpowiedz

17

Jestem zaskoczony, że test wartości pustych na atrybucie, który często nie istnieje, działa kiedykolwiek - co należy zrobić jest sprawdzenie czy istnieje, czy nie jest to pusty:

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

Ahhh. tak to działa. (Byłem też zaskoczony ...). Dziękuję za poświęcony czas, doceniam to. To całkowicie naprawia. – Jay

Powiązane problemy