本文へジャンプ
  • ながの子育て応援宣言
  • 行動宣言募集
  • 婚活サポーター募集中
  • 婚活の秘訣
  • ながの結婚支援ネットワーク

投稿

expat 예제

2019年8月2日

이 레시피는 xml.parsers.expat를 사용하여 XML 파일을 직접 구문 분석할 수 있는 재사용 가능한 방법을 제공합니다. SAX는 더 표준화되고 기능이 풍부하지만 expat도 사용할 수 있으며 때로는 이미 가벼운 SAX 접근 방식보다 더 가볍을 수 있습니다. MyXML 클래스를 다시 사용하려면 MyXML에서 상속하는 새 클래스를 정의하기만 하면 됩니다. 새 클래스 내에서 상속된 XML 처리기 메서드를 재정의하고 사용할 준비가 되었습니다. BT_HEX 와 BT_NMSTRT는 쉽습니다. 첫 번째 문자는 유효한 육각형 숫자, 즉 “a” 또는 “f” 또는 “A”에서 “F”로 될 수 있는 문자입니다. 두 번째는 다른 문자입니다. 두 경우 모두 유효한 것으로 받아들이고 구문 분석 포인터를 이동하면 실제로 예제 구문 분석에서 발생합니다. 세 개의 구문 분석 함수 XML_Parse, XML_ParseBuffer 및 XML_GetBuffer는 별도의 파서 인스턴스, 즉 처리기를 호출하지 않은 경우 처리기 내에서 호출할 수 없습니다. 예를 들어 XML_ExternalEntityRefHandler 내에서 구문 분석 함수를 호출하는 것이 괜찮습니다.

xml.parsers.expat 모듈에는 두 가지 기능이 포함되어 있습니다: “O” 문자(BT_NMSTRT)가 공백(BT_S)보다 normal_contentTok()에 더 이상 흥미롭지 않으므로 정확히 동일한 방식으로 동작하고 doContent() 문자열을 “One”을 문자 데이터 처리기. 이렇게 하면 처리기 작성에 문제가 표시됩니다. 문자 데이터 처리기 자체에서 전달된 데이터가 이전 데이터의 연속인지 여부를 알 수 없습니다. 이 예제에서 처리기가 있는 경우 첫 번째 호출의 “n”이 두 번째 호출의 “”에 결합되었지만 세 번째 호출의 “하나”에는 결합되지 않았다는 것을 알리는 방법이 없습니다. 시작 및 종료 요소 처리기에서 어떤 데이터를 함께 조인해야 하는지, 어떤 데이터를 함께 조인해야 하는지 알려주는 데 도움이 필요합니다. 이 모듈은 pyexpat 모듈을 사용하여 Expat 파서에 대한 액세스를 제공합니다. pyexpat 모듈의 직접 사용은 더 이상 사용되지 않습니다. DTD 지원을 컴파일해야 하는 작업이 요청되었지만 Expat는 DTD 지원 없이 구성되었습니다. 이것은 xml.parsers.expat 모듈의 표준 빌드에 의해 보고되어서는 안됩니다. 위의 예제에서는 시작 및 끝 처리기에서 깊이를 조작하는 방법의 차이를 확인합니다. 끝 태그 처리기는 시작 태그 처리기의 미러 이미지여야 합니다.

이는 포함을 적절하게 모델링하는 데 필요합니다. 시작 태그 처리기에서 시작 태그 코드의 본문 다음에 깊이를 증가 한 다음 끝 처리기에서 본문 앞에 조작해야 합니다. 시작 처리기에서 먼저 증분하기로 결정했다면 최종 처리기에서 마지막 것을 제거해야했습니다. 유닉스 기반 시스템에서는 일반 위치에 expat가 설치될 때 Makefile이 어떻게 보일지 다음과 같습니다. 외국인 API에는 파서 개체를 만들기 위한 세 가지 함수가 있습니다. 그러나 이 중 두 가지(XML_ParserCreate 및 XML_ParserCreateNS)만 최상위 문서에 대한 파서를 생성하는 데 사용할 수 있습니다. 이러한 함수에서 반환되는 개체는 불투명 포인터(즉, expat.h가 추가 내부 구조를 가진 데이터에 대해 void *로 선언합니다)입니다. 이 개체와 연결된 메모리를 해제하려면 XML_ParserFree를 호출해야 합니다.

파서에 저장되는 사용자 데이터를 제공한 경우 응용 프로그램은 XML_ParserFree를 호출하기 전에 해당 데이터를 해제해야 합니다. namespace.c 예제에서는 이러한 기능의 사용을 보여 줍니다. outline.c와 마찬가지로 개요를 생성하지만 네임스페이스 범위가 시작될 때와 종료될 때 추가로 추가로 추가됩니다.

グローバルメニューへジャンプ

ページのトップへ