# `xml.sax.saxutils` — SAX 유틸리티

소스 코드: 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에서 변경: Added the short_empty_elements parameter.

class xml.sax.saxutils.XMLFilterBase(base)

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

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

  This function takes an input source and an optional base URL and returns a fully resolved `InputSource` object ready for reading. The input source can be given as a string, a file-like object, or an `InputSource` object; parsers will use this function to implement the polymorphic source argument to their `parse()` method.