# `xml.sax` — SAX2 구문 분석기 지원

소스 코드: Lib/xml/sax/__init__.py

The `xml.sax` package provides a number of modules which implement the Simple API for XML (SAX) interface for Python. The package itself provides the SAX exceptions and the convenience functions which will be most used by users of the SAX API.

참고

If you need to parse untrusted or unauthenticated data, see XML security.

버전 3.7.1에서 변경: SAX 구문 분석기는 보안을 강화하기 위해 더는 일반 외부 엔티티를 처리하지 않습니다. 이전에는, 구문 분석기가 DTD와 엔티티에 대해 네트워크 연결을 만들어 원격 파일을 가져오거나 파일 시스템에서 로컬 파일을 로드했습니다. 이 기능은 구문 분석기 객체에 대해 인자 `feature_external_ges`로 메서드 `setFeature()`를 사용하여 다시 활성화할 수 있습니다.

편리 함수는 다음과 같습니다:

xml.sax.make_parser(parser_list=[])

  SAX `XMLReader` 객체를 만들고 반환합니다. 발견된 첫 번째 구문 분석기가 사용됩니다. parser_list가 제공되면, `create_parser()`라는 함수가 있는 모듈의 이름을 나타내는 문자열의 이터러블이어야 합니다. parser_list에 나열된 모듈은 기본 구문 분석기 목록에 있는 모듈보다 먼저 사용됩니다.

  버전 3.8에서 변경: parser_list 인자는 리스트뿐만 아니라 임의의 이터러블일 수 있습니다.

xml.sax.parse(filename_or_stream, handler, error_handler=handler.ErrorHandler())

  SAX 구문 분석기를 만들어 문서 구문 분석에 사용합니다. filename_or_stream으로 전달된 문서는 파일명이나 파일 객체일 수 있습니다. handler 매개 변수는 SAX `ContentHandler` 인스턴스여야 합니다. error_handler가 주어지면, SAX `ErrorHandler` 인스턴스여야 합니다; 생략하면, 모든 에러에서 `SAXParseException`이 발생합니다. 반환 값은 없습니다; 모든 작업은 전달된 handler가 처리해야 합니다.

xml.sax.parseString(string, handler, error_handler=handler.ErrorHandler())

  `parse()`와 비슷하지만, 매개 변수로 받은 버퍼 string에서 구문 분석합니다. string은 `str` 인스턴스나 바이트열류 객체여야 합니다.

  버전 3.5에서 변경: `str` 인스턴스에 대한 지원이 추가되었습니다.

전형적인 SAX 응용 프로그램은 입력기(reader), 처리기(handler) 및 입력 소스(input source)의 세 가지 종류의 객체를 사용합니다: 이 문맥에서 “입력기(Reader)”는 구문 분석기에 대한 또 다른 용어입니다, 즉, 입력 소스에서 바이트나 문자를 읽고, 이벤트 시퀀스를 생성하는 코드 조각입니다. 그런 다음 이벤트는 처리기 객체로 배포됩니다, 즉 입력기가 처리기의 메서드를 호출합니다. 따라서 SAX 응용 프로그램은 입력기 객체를 얻고, 입력 소스를 만들거나 열고, 처리기를 만들고, 이 객체들을 모두 연결해야 합니다. 준비의 마지막 단계로, 입력기가 입력을 구문 분석하도록 호출됩니다. 구문 분석하는 동안, 처리기 객체의 메서드는 입력 데이터로부터 온 구조적 및 구문적 이벤트를 기반으로 호출됩니다.

For these objects, only the interfaces are relevant; they are normally not instantiated by the application itself. Since Python does not have an explicit notion of interface, they are formally introduced as classes, but applications may use implementations which do not inherit from the provided classes. The `InputSource`, `Locator`, `Attributes`, `AttributesNS`, and `XMLReader` interfaces are defined in the module `xml.sax.xmlreader`. The handler interfaces are defined in `xml.sax.handler`. For convenience, `InputSource` (which is often instantiated directly) and the handler classes are also available from `xml.sax`. These interfaces are described below.

In addition to these classes, `xml.sax` provides the following exception classes.

exception xml.sax.SAXException(msg, exception=None)

  XML 에러나 경고를 캡슐화합니다. 이 클래스에는 XML 구문 분석기나 응용 프로그램의 기본 에러나 경고 정보가 포함될 수 있습니다: 추가 기능을 제공하거나 지역화를 추가하기 위해 서브 클래싱 될 수 있습니다. `ErrorHandler` 인터페이스에 정의된 처리기가 이 예외의 인스턴스를 수신하지만, 예외를 실제로 발생시킬 필요는 없음에 유의하십시오 — 정보를 담는 컨테이너로도 유용합니다.

  인스턴스로 만들어질 때, msg는 사람이 읽을 수 있는 에러에 관한 설명이어야 합니다. 선택적 exception 매개 변수를 주면, `None`이거나 구문 분석 코드에 의해 잡힌 예외여야 하고, 정보로 함께 전달됩니다.

  이것은 다른 SAX 예외 클래스의 베이스 클래스입니다.

exception xml.sax.SAXParseException(msg, exception, locator)

  구문 분석 에러 시 발생하는 `SAXException`의 서브 클래스. 이 클래스의 인스턴스는 SAX `ErrorHandler` 인터페이스의 메서드에 전달되어 구문 분석 에러에 대한 정보를 제공합니다. 이 클래스는 `SAXException` 인터페이스뿐만 아니라 SAX `Locator` 인터페이스를 지원합니다.

exception xml.sax.SAXNotRecognizedException(msg, exception=None)

  SAX `XMLReader`가 인식할 수 없는 기능이나 속성을 만날 때 발생하는 `SAXException`의 서브 클래스. SAX 응용 프로그램과 확장은 유사한 목적으로 이 클래스를 사용할 수 있습니다.

exception xml.sax.SAXNotSupportedException(msg, exception=None)

  SAX `XMLReader`가 지원되지 않는 기능을 활성화하거나 구현에서 지원하지 않는 값으로 속성을 설정하도록 요청될 때 발생하는 `SAXException`의 서브 클래스. SAX 응용 프로그램과 확장은 유사한 목적으로 이 클래스를 사용할 수 있습니다.

더 보기

SAX: The Simple API for XML

  이 사이트는 SAX API의 정의가 집중되는 곳입니다. Java 구현과 온라인 설명서를 제공합니다. 구현과 역사적 정보에 대한 링크도 있습니다.

모듈 `xml.sax.handler`

  응용 프로그램이 제공하는 객체에 대한 인터페이스의 정의.

모듈 `xml.sax.saxutils`

  SAX 응용 프로그램에서 사용하기 위한 편리 함수.

모듈 `xml.sax.xmlreader`

  구문 분석기가 제공하는 객체에 대한 인터페이스의 정의.

## SAXException 객체

`SAXException` 예외 클래스는 다음 메서드를 지원합니다:

SAXException.getMessage()

  에러 상태를 설명하는 사람이 읽을 수 있는 메시지를 반환합니다.

SAXException.getException()

  캡슐화된 예외 객체나 `None`을 반환합니다.