¿Cómo puedo obtener el orden de una lista de atributos de elementos utilizando Python xml.sax?

¿Cómo puedo obtener el orden de una lista de atributos de elementos? No es totalmente necesario para el procesamiento final, pero es bueno:

Aquí está mi procesador de atributos actual, que hace un pase similar a un diccionario sobre los atributos.

class MySaxDocumentHandler(xml.sax.handler.ContentHandler): def startElement(self, name, attrs): for attrName in attrs.keys(): ... 

No creo que se pueda hacer con SAX (al menos como lo admite actualmente Python). Se podría hacer con expat , estableciendo el atributo de atributos ordered_attributes del objeto analizador en True (los atributos son entonces dos listas paralelas, una de nombres y otra de valores, en el mismo orden que en la fuente XML).

Desafortunadamente, es imposible en la implementación Python de Sax.

Este código de la biblioteca de Python (v2.5) le dice todo lo que necesita saber:

 class AttributesImpl: def __init__(self, attrs): """Non-NS-aware implementation. attrs should be of the form {name : value}.""" self._attrs = attrs 

Al controlador StartElement se le pasa un objeto que implementa la especificación AttributeImpl , que utiliza un tipo de dict Python simple o ” para almacenar pares clave / valor. Los tipos de dict Python no garantizan el orden de las teclas.