如何获取元素属性列表的顺序?对于最终处理来说并不是完全必要的,但它很高兴:
在过滤器中,不要无偿地重新排序属性列表
按照输入中显示的顺序打印数据
这是我当前的属性处理器,它对属性进行类似字典的传递。
class MySaxDocumentHandler(xml.sax.handler.ContentHandler):
def startElement(self, name, attrs):
for attrName in attrs.keys():
...
答案 0 :(得分:1)
我认为不能用SAX完成(至少目前Python支持)。可以使用expat来完成,将解析器对象的ordered_attributes
属性设置为True
(属性是两个并行列表,一个名称和一个值,顺序相同就像在XML源中一样。)
答案 1 :(得分:1)
不幸的是,在Sax的Python实现中这是不可能的。
Python库(v2.5)中的代码告诉您需要知道的所有内容:
class AttributesImpl:
def __init__(self, attrs):
"""Non-NS-aware implementation.
attrs should be of the form {name : value}."""
self._attrs = attrs
传递StartElement
处理程序实现AttributeImpl
规范的对象,该规范使用普通的'Python dict
类型来存储键/值对。 Python dict
类型不保证密钥的顺序。