2010-02-14 64 views
7

我需要的只是獲取相應標籤的文本並將其保存到數據庫中。由於xml文件很大(4.5GB),我正在使用sax。我使用字符方法獲取文本並將其放入字典中。但是,當我在endElement方法中打印文本時,我得到的是新文本而不是文本。如何使用python 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 2010-02-15 02:52:22

+0

我在哪裏可以找到對此行爲的參考? 標籤中的文本被SAX處理器分塊。字符可能會被多次調用。 – ablimit 2010-02-15 03:43:05

+0

對不起,錯字。我編輯了答案。 self.map [name] ='' – codeape 2010-02-15 13:33:19

相關問題