2012-04-11 13 views
7

में कोई विशेषता मौजूद है या नहीं, मेरे पास कुछ एक्सएमएल है कि मैं lxml के माध्यम से पायथन में पार्सिंग कर रहा हूं।कुछ एक्सएमएल

मुझे उन परिस्थितियों का सामना करना पड़ रहा है जहां कुछ तत्वों के गुण हैं और कुछ नहीं करते हैं।

मैं उन्हें निकालने अगर वे मौजूद हैं, लेकिन उन्हें छोड़ अगर वे क्या करने की जरूरत नहीं - मैं वर्तमान में त्रुटियों के साथ उतरने कर रहा हूँ (के रूप में मेरे दृष्टिकोण गलत है ...)

मैं एक testfornull तैनात किया है, लेकिन कि सभी मामलों में काम नहीं करता है:

कोड:

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

एक्सएमएल एक:

<ByteSequence Reference="BOFoffset"> 

एक्सएमएल बी:

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

एक्सएमएल सी:

<ByteSequence Endianness = "little-endian"> 

एक्सएमएल डी:

<ByteSequence> 

मेरे वर्तमान विधि केवल ए, बी या डी यह से निपटने कर सकते हैं सी के साथ सामना नहीं कर सकते

उत्तर

17

मुझे आश्चर्य है कि एक विशेषता पर शून्य मानों के लिए एक परीक्षण जो अक्सर मौजूद नहीं होगा कभी - आपको क्या करना चाहिए यह जांचना है कि यह खाली है या नहीं:

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

अहह। यह वैसे काम करता है। (मैं भी आश्चर्यचकित था ....)। आपके समय के लिए धन्यवाद, मैं इसकी सराहना करता हूं। यह पूरी तरह से इसे ठीक करता है। – Jay