2010-02-14 18 views
7

मुझे जो चाहिए वह सिर्फ इसी टैग का पाठ प्राप्त करें और इसे डेटाबेस में जारी रखें। चूंकि एक्सएमएल फ़ाइल बड़ी है (4.5 जीबी) मैं sax का उपयोग कर रहा हूं। मैंने पाठ प्राप्त करने और इसे एक शब्दकोश में रखने के लिए वर्ण विधि का उपयोग किया था। हालांकि जब मैं एंडलेमेंट विधि पर टेक्स्ट प्रिंट कर रहा हूं, तो मुझे टेक्स्ट की बजाय एक नई पंक्ति मिल रही है।पायथन SAX पार्सर का उपयोग करके टैग के बीच टेक्स्ट कैसे प्राप्त किया जा सकता है?

def characters(self,content): 
    text = unescape(content)) 
    self.map[self.tag]=text 

def startElement(self, name, attrs): 
    self.tag = name 

def endElement (self, name) 
    if (name=="sometag") 
    print self.map[name] 

अग्रिम धन्यवाद:

यहाँ मेरी कोड है।

उत्तर

6

टैग में पाठ SAX प्रोसेसर द्वारा खंडित किया गया है। characters को कई बार बुलाया जा सकता है।

def startElement(self, name, attrs): 
    self.map[name] = '' 
    self.tag = name 

def characters(self, content): 
    self.map[self.tag] += content 

def endElement(self, name): 
    print self.map[name] 
+0

धन्यवाद:

आप की तरह कुछ करने की जरूरत है! नीचे कोड एक दुर्घटना है या यह ऐसा होना चाहिए? self.map [name] == '' – ablimit

+0

मुझे इस व्यवहार का संदर्भ कहां मिल सकता है? टैग में पाठ SAX प्रोसेसर द्वारा चुने गए हैं। पात्रों को कई बार कहा जा सकता है। – ablimit

+0

क्षमा करें, एक टाइपो। मैंने जवाब संपादित किया है। self.map [name] = '' – codeape

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