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(Extensible Markup Language)은 정보를 표현하고 전달하기 위한 표준입니다. 개별 요소의 기능을 설명하고 이들 요소 간의 계층적 관계를 체계화하기 위해 데이터 세트 또는 문서에 적용되는 사용자 정의 태그를 정의하기 위한 메타 언어입니다. Junos OS는 Junos 디바이스의 운영 및 구성을 위해 XML을 기본적으로 지원합니다.

클라이언트 애플리케이션은 XML 파서를 사용하여 XML 문서(예: Junos 디바이스의 RPC 응답에서 XML로 반환된 명령 출력 또는 구성 데이터)를 읽고 작업합니다. XML 파서는 다양한 방법을 사용하여 XML 문서를 구문 분석할 수 있습니다. DOM(문서 개체 모델) 파서는 전체 XML 문서의 트리 표현을 만들어 전체적으로 메모리에 로드합니다. 반면, SAX(Simple API for XML) 구문 분석기는 이벤트 기반 구문 분석을 수행하고 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 구문 분석을 사용합니다.

  • 운영 테이블 및 뷰를 사용하여 구조화된 출력을 검색하는 경우When you use operational Tables and Views to retrieve structured output

  • 지정된 세션의 Device() 인스턴스에 인수를 use_filter=True 포함하고 XML 출력에서 태그 값의 하위 집합을 요청하는 작업을 수행하는 경우

예를 들어 다음 스크립트는 RPC를 get_interface_information 실행하고 XML 출력을 필터링하여 각 물리적 인터페이스에 대한 요소만 <name> 반환합니다. 이 경우 XML의 하위 집합만 요청되므로 SAX 구문 분석이 사용됩니다.