Как я могу получить порядок в списке атрибутов элемента, используя Python xml.sax?

StackOverflow https://stackoverflow.com/questions/998514

  •  14-09-2019
  •  | 
  •  

Вопрос

Как я могу получить порядок в списке атрибутов элемента?Это не совсем необходимо для окончательной обработки, но приятно:

  • в фильтре, чтобы не изменять порядок списка атрибутов без необходимости

  • во время отладки выведите данные в том же порядке, в каком они отображаются во входных данных

Вот мой текущий обработчик атрибутов, который выполняет словарный переход по атрибутам.

class MySaxDocumentHandler(xml.sax.handler.ContentHandler):
    def startElement(self, name, attrs):
        for attrName in attrs.keys():
            ...
Это было полезно?

Решение

Я не думаю, что это можно сделать с помощью SAX (по крайней мере, в том виде, в каком он сейчас поддерживается Python).Это можно было бы сделать с эмигрант, установив ordered_attributes атрибут объекта синтаксического анализатора True (атрибуты представляют собой два параллельных списка, один из имен и один из значений, в том же порядке, что и в источнике XML).

Другие советы

К сожалению, это невозможно в Python-реализации Sax.

Этот код из библиотеки Python (версия 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 введите для хранения пар ключ / значение.Питон dict типы не гарантируют порядок расположения ключей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top