Quel est le moyen le plus rapide pour analyser de grandes XML docs en Python?

Je suis en train d'exécuter le code suivant fondée sur le Chapitre 12.5 du Python Cookbook:

from xml.parsers import expat
class Element(object):
def __init__(self, name, attributes):
self.name = name
self.attributes = attributes
self.cdata = ''
self.children = []
def addChild(self, element):
self.children.append(element)
def getAttribute(self,key):
return self.attributes.get(key)
def getData(self):
return self.cdata
def getElements(self, name=''):
if name:
return [c for c in self.children if c.name == name]
else:
return list(self.children)
class Xml2Obj(object):
def __init__(self):
self.root = None
self.nodeStack = []
def StartElement(self, name, attributes):
element = Element(name.encode(), attributes)
if self.nodeStack:
parent = self.nodeStack[-1]
parent.addChild(element)
else:
self.root = element
self.nodeStack.append(element)
def EndElement(self, name):
self.nodeStack.pop()
def CharacterData(self,data):
if data.strip():
data = data.encode()
element = self.nodeStack[-1]
element.cdata += data
def Parse(self, filename):
Parser = expat.ParserCreate()
Parser.StartElementHandler = self.StartElement
Parser.EndElementHandler = self.EndElement
Parser.CharacterDataHandler = self.CharacterData
ParserStatus = Parser.Parse(open(filename).read(),1)
return self.root

Je suis en train de travailler avec des documents XML d'environ 1 GO en taille. Quelqu'un sait-il un moyen plus rapide pour analyser ces?

  • Votre question est beaucoup trop vague pour glaner toutes les réponses utiles. Envisager de répondre à ces questions: - Qu'essayez-vous de faire avec ce 1 GO de document XML? - À quelle vitesse avez-vous besoin de cet analyseur être? - Pourriez-vous paresseusement parcourir le document, plutôt que de se charger de tout ce qui est dans la mémoire de l'aller?
  • J'ai besoin de charger en mémoire, l'index, les données, puis "parcourir", et de la traiter.
InformationsquelleAutor Jeroen Dirks | 2008-11-27