2013-03-22 6 views
16

मैं अजगर ट्री के माध्यम से पायथन में एक XML फ़ाइल पार्स कर रहा हूं और सामग्री को एक सीपीपी फ़ाइल में लिख रहा हूं।पार्सिंग से पहले एक्सएमएल में विशेषताओं और टैग के अस्तित्व की जांच कैसे कर सकता हूं?

बच्चों के टैग की सामग्री अलग-अलग टैग के लिए भिन्न होगी। उदाहरण के लिए पहले ईवेंट टैग में बच्चे के रूप में पार्टी टैग होता है लेकिन दूसरा ईवेंट टैग नहीं होता है।

-> मैं कैसे जांच सकता हूं कि एक टैग मौजूद है या नहीं?

-> बच्चों के पास पहले ईवेंट टैग में मूल्य विशेषता है लेकिन दूसरे में नहीं। मैं यह कैसे देख सकता हूं कि कोई विशेषता मौजूद है या नहीं, इसके मूल्य को लेने से पहले।

-> वर्तमान में मेरा कोड गैर मौजूदा पार्टी टैग के लिए एक त्रुटि फेंकता है और दूसरे बच्चों के टैग के लिए "कोई नहीं" विशेषता मान सेट करता है।

<main> 
    <event> 
    <party>Big</party> 
    <children type="me" value="3"/> 
    </event> 

    <event> 
    <children type="me"/> 
    </event> 

</main> 

कोड:

import xml.etree.ElementTree as ET 
tree = ET.parse('party.xml') 
root = tree.getroot() 
for event in root.findall('event'): 
    parties = event.find('party').text 
    children = event.get('value') 

मैं टैग की जांच करने के लिए और फिर उनके मूल्यों ले चाहता हूँ।

उत्तर

40

यदि कोई टैग मौजूद नहीं है, तो .find() वास्तव में None देता है। बस उस मूल्य के लिए परीक्षण:

for event in root.findall('event'): 
    party = event.find('party') 
    if party is None: 
     continue 
    parties = party.text 
    children = event.get('value') 

आप पहले से ही घटना पर .get() का उपयोग value विशेषता के लिए परीक्षण करने के लिए; यह None लौटाता है साथ ही विशेषता मौजूद नहीं है।

गुण .attrib शब्दकोश में जमा हो जाती है, तो आप विशेषता के लिए स्पष्ट रूप से भी परीक्षण करने के लिए मानक अजगर तकनीक का उपयोग कर सकते हैं: अगर पार्टी कोई नहीं है

if 'value' in event.attrib: 
    # value attribute is present. 
+0

@Martjin पीटर्स आपने कहा: मैं अजगर में अगर कैसे लिखेंगे मैं कुछ लिखना चाहता हूं - अगर पार्टी! = कोई नहीं: – Abhishek

+4

@ अभिषेक: 'अगर पार्टी कोई नहीं है'। [पायथन तुलना ऑपरेटर] देखें (http://docs.python.org/2/reference/expressions.html#not-in)। –

+0

यह भी उल्लेख करने के लिए धन्यवाद कि गुणों की जांच कैसे करें। बहुत अच्छा जवाब। – SSchneid

संबंधित मुद्दे

 संबंधित मुद्दे