# `xml.sax.saxutils` — SAX Utilities

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

`xml.sax.saxutils` 모듈은 SAX 응용 프로그램을 만들 때 직접 사용하거나 베이스 클래스로 사용하는 데 모두 유용한 많은 클래스와 함수를 포함합니다.

xml.sax.saxutils.escape(data, entities={})

  data 문자열에 있는 `'&'`, `'<'` 및 `'>'`를 이스케이프 합니다.

  딕셔너리를 선택적 entities 매개 변수로 전달하여 data의 다른 문자열을 이스케이프 할 수 있습니다. 키와 값은 모두 문자열이어야 합니다; 각 키는 해당 값으로 치환되게 됩니다. 문자 `'&'`, `'<'` 및 `'>'`는 entities가 제공되더라도 항상 이스케이프 됩니다.

xml.sax.saxutils.unescape(data, entities={})

  data 문자열에 있는 `'&amp;'`, `'&lt;'` 및 `'&gt;'`를 역 이스케이프 합니다.

  딕셔너리를 선택적 entities 매개 변수로 전달하여 data의 다른 문자열을 역 이스케이프 할 수 있습니다. 키와 값은 모두 문자열이어야 합니다; 각 키는 해당 값으로 치환되게 됩니다. `'&amp'`, `'&lt;'` 및 `'&gt;'`는 entities가 제공되더라도 항상 역 이스케이프 됩니다.

xml.sax.saxutils.quoteattr(data, entities={})

  `escape()`와 비슷하지만, data가 어트리뷰트 값으로 사용되도록 준비합니다. 반환 값은 추가로 필요한 치환이 적용된 data의 따옴표 붙은 버전입니다. `quoteattr()`는 data의 내용에 따라 인용 부호 문자를 선택하여 가능하면 문자열의 인용 부호 문자를 인코딩하지 않습니다. 작은따옴표와 큰따옴표가 모두 data에 이미 있으면, 큰따옴표 문자가 인코딩되고, data는 큰따옴표로 묶입니다. 결과 문자열은 어트리뷰트 값으로 직접 사용할 수 있습니다:

      >>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))
      <element attr="ab ' cd &quot; ef">

  이 함수는 참조 구상 문법(reference concrete syntax)을 사용하여 HTML이나 모든 SGML을 위한 어트리뷰트 값을 생성할 때 유용합니다.

class xml.sax.saxutils.XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False)

  이 클래스는 SAX 이벤트를 다시 XML 문서에 쓰는 방식으로 `ContentHandler` 인터페이스를 구현합니다. 다시 말해, `XMLGenerator`를 내용 처리기로 사용하면 구문 분석 중인 원본 문서를 재생산합니다. out은 파일류 객체 여야하고, 기본값은 sys.stdout입니다. encoding은 출력 스트림의 인코딩이고, 기본값은 `'iso-8859-1'`입니다. short_empty_elements는 내용이 없는 엘리먼트의 형식을 제어합니다: `False`(기본값)는 시작/끝 태그 쌍으로 출력하고, `True`로 설정하면 하나의 스스로 닫힌 태그를 출력합니다.

  버전 3.2에서 변경: short_empty_elements 매개 변수를 추가했습니다.

class xml.sax.saxutils.XMLFilterBase(base)

  이 클래스는 `XMLReader`와 클라이언트 응용 프로그램의 이벤트 처리기 사이에 위치하도록 설계되었습니다. 기본적으로, 이것은 요청을 입력기에 전달하고 이벤트를 변경 없이 처리기에 전달할 뿐 아무것도 하지 않지만, 서브 클래스는 특정 메서드를 재정의하여 이벤트 스트림이나 구성 요청이 지나갈 때 수정할 수 있습니다.

xml.sax.saxutils.prepare_input_source(source, base='')

  이 함수는 입력 소스와 선택적인 베이스 URL을 받아들이고 완전히 결정되고 읽을 준비가 된 `InputSource` 객체를 반환합니다. 입력 소스는 문자열, 파일류 객체 또는 `InputSource` 객체로 지정할 수 있습니다; 구문 분석기는 `parse()` 메서드에 대한 다형적인 source 인자를 구현하는 데 이 함수를 사용할 수 있습니다.