0

要素属性リストの順序を取得するにはどうすればよいですか? 最終処理に完全に必要というわけではありませんが、次のことを行うと便利です。

  • フィルターで、属性リストを不当に並べ替えない

  • デバッグ中に、入力に表示されるのと同じ順序でデータを出力します

これは、属性を辞書のように渡す現在の属性プロセッサです。

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

2 に答える 2

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これは、プレーンな古い Pythondict型を使用してキーと値のペアを格納します。Pythondict型は、キーの順序を保証しません。

于 2009-06-15T22:24:10.183 に答える
1

SAX ではできないと思います (少なくとも現在 Python でサポートされている限り)。これは、expatordered_attributesを使用して、パーサー オブジェクトの属性を に設定することで実行できますTrue(属性は、XML ソースと同じ順序で、名前と値の 2 つの並列リストになります)。

于 2009-06-15T21:54:48.723 に答える