Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZセッションのXMLパーサーを指定する

概要 Junos PyEZが特定の操作に対して異なるXMLパーサーを使用して、メモリ使用量と処理速度を最適化する方法を学びます。

拡張マークアップ言語 (XML) は、情報を表現および伝達するための標準です。これは、データセットまたはドキュメントに適用されるカスタマイズされたタグを定義し、個々の要素の機能を記述し、それらの間の階層関係を体系化するためのメタ言語です。Junos OSは、Junosデバイスの運用と設定のためにXMLをネイティブにサポートしています。

クライアント アプリケーションは、XML パーサーを使用して、XML ドキュメント(例えば、Junos デバイスの RPC 応答で XML として返されたコマンド出力や構成データなど)を読み取って操作します。XML パーサーは、さまざまな方法を使用して XML 文書を構文解析できます。ドキュメント オブジェクト モデル (DOM) パーサーは、XML ドキュメント全体のツリー表現を作成し、その全体がメモリに読み込まれます。対照的に、Simple API for XML (SAX) パーサーは、イベントベースの解析を実行し、XML ドキュメントの各部分を順番に解析します。その結果、SAX パーサーは、いつでも XML データのごく一部しかメモリーにロードしません。

SAX パーサーは操作を実行するために多くのメモリを必要としませんが、DOM パーサーのメモリ要件はドキュメントのサイズとともに増加します。一般に、DOM 解析は、アプリケーションがメモリ内の XML ドキュメント全体にアクセスできるため、SAX 解析よりも高速です。ただし、XML ドキュメントのサイズが大きくなると、DOM パーサーはより多くのメモリを必要とし、SAX 解析はより効率的になります。

Junos PyEZ は ncclient Python ライブラリを使用しますが、デフォルトでは XML 処理に DOM 解析が使用されます。この場合、パーサーは XML ドキュメント全体をオブジェクトに変換 lxml し、それをメモリに読み込みます。Junos デバイスは、show コマンドの出力や設定データ用に、大きな XML ドキュメントを返すことができます。このような場合に XML から値の小さなサブセットのみを取得する必要がある場合、DOM 解析は非効率的になる可能性があります。

Junos PyEZ リリース 2.3.0 以降、Junos PyEZ は以下の場合に可能な場合に SAX 解析を使用します。

  • 操作テーブルとビューを使用して構造化出力を取得する場合

  • 特定のセッションのインスタンスにDevice()引数を含めuse_filter=True、XML 出力からタグ値のサブセットを要求する操作を実行する場合

たとえば、次のスクリプトは RPC を実行し、 get_interface_information XML 出力をフィルター処理して、各物理インターフェイスの要素のみ <name> を返します。この場合、XML のサブセットのみが要求されるため、SAX 構文解析が使用されます。