2010-02-14 1 views
7

내가 필요한 것은 해당 태그의 텍스트를 가져 와서 데이터베이스에 보관하는 것입니다. xml 파일이 크기가 커서 (4.5GB) 저는 색소폰을 사용하고 있습니다. 나는 문자 메서드를 사용하여 텍스트를 가져 와서 사전에 넣었습니다. 그러나 endElement 메서드에서 텍스트를 인쇄 할 때 텍스트 대신 새 줄이 나타납니다. 사전에어떻게 파이썬 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 프로세서에 의해 chuncked됩니다. 문자는 여러 번 호출 될 수 있습니다. – ablimit

+0

죄송합니다. 오타입니다. 나는 대답을 편집했다. self.map [name] = '' – codeape

관련 문제