QXmlContentHandler Class
QXmlContentHandler 클래스는 XML 데이터의 논리적 내용을 보고하기 위한 인터페이스를 제공합니다. 더 보기...
| 헤더: | #include <QXmlContentHandler> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
| 상속된 클래스: |
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
공개 함수
| virtual | ~QXmlContentHandler() |
| virtual bool | characters(const QString &ch) = 0 |
| virtual bool | endDocument() = 0 |
| virtual bool | endElement(const QString &namespaceURI, const QString &localName, const QString &qName) = 0 |
| virtual bool | endPrefixMapping(const QString &prefix) = 0 |
| virtual QString | errorString() const = 0 |
| virtual bool | ignorableWhitespace(const QString &ch) = 0 |
| virtual bool | processingInstruction(const QString &target, const QString &data) = 0 |
| virtual void | setDocumentLocator(QXmlLocator *locator) = 0 |
| virtual bool | skippedEntity(const QString &name) = 0 |
| virtual bool | startDocument() = 0 |
| virtual bool | startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) = 0 |
| virtual bool | startPrefixMapping(const QString &prefix, const QString &uri) = 0 |
상세 설명
응용 프로그램이 기본 구문 분석 이벤트를 알림받아야 하는 경우, 이 인터페이스를 구현하고 ` QXmlReader::setContentHandler()`를 사용하여 활성화할 수 있습니다. 그러면 리더는 이 인터페이스를 통해 요소 및 문자 데이터의 시작과 끝과 같은 기본 문서 관련 이벤트를 보고할 수 있습니다.
이 인터페이스에서 이벤트의 순서는 매우 중요하며, 문서 자체에 포함된 정보의 순서를 그대로 반영합니다. 예를 들어, 요소의 모든 콘텐츠(문자 데이터, 처리 지시문 및 하위 요소)는 startElement() 이벤트와 해당 endElement() 이벤트 사이에 순서대로 나타납니다.
QXmlDefaultHandler 클래스는 이 인터페이스에 대한 기본 구현을 제공합니다. 특정 구문 분석 이벤트에 대해서만 알림을 받고자 하는 경우, QXmlDefaultHandler 클래스를 상속하여 하위 클래스를 만드는 것이 매우 편리합니다.
startDocument() 함수는 문서 시작 시 호출되며, endDocument()은 문서 끝에서 호출됩니다. 파싱이 시작되기 전에 setDocumentLocator()이 호출됩니다. 각 요소에 대해 startElement()가 호출되며, 각 요소의 끝에서는 endElement()가 호출됩니다. characters() 함수는 문자 데이터 청크에 대해 호출되며, ignorableWhitespace()는 공백 청크에 대해, processingInstruction()는 처리 지시문에 대해 호출됩니다. 엔티티가 건너뛴 경우 skippedEntity()가 호출됩니다. 접두사 URI 범위의 시작 부분에서는 startPrefixMapping()가 호출됩니다.
QXmlDTDHandler, QXmlDeclHandler, QXmlEntityResolver, QXmlErrorHandler 및 QXmlLexicalHandler도 참조하십시오 .
멤버 함수 문서
[virtual noexcept] QXmlContentHandler::~QXmlContentHandler()
콘텐츠 핸들러를 제거합니다.
[pure virtual] bool QXmlContentHandler::characters(const QString &ch)
리더는 일정한 분량의 문자 데이터를 파싱한 후 이 함수를 호출합니다(일반 문자 데이터이거나 CDATA 섹션 내의 문자 데이터일 수 있습니다. 이 두 유형을 구분해야 하는 경우 QXmlLexicalHandler::startCDATA()과 QXmlLexicalHandler::endCDATA()을 사용해야 합니다). 문자 데이터는 ch 에 보고됩니다.
일부 리더는 이 함수 대신 ignorableWhitespace() 함수를 사용하여 요소 콘텐츠 내의 공백을 보고합니다.
리더는 요소의 문자 데이터를 하나 이상의 청크로 보고할 수 있습니다. 예를 들어, 리더는 "a<b"를 세 개의 character() 이벤트("a ", "<", " b")로 보고할 수 있습니다.
이 함수가 ` false `를 반환하면 리더는 구문 분석을 중단하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
[pure virtual] bool QXmlContentHandler::endDocument()
리더는 구문 분석을 완료한 후 이 함수를 호출합니다. 이 함수는 단 한 번만 호출되며, 가장 마지막에 호출되는 핸들러 함수입니다. 리더가 모든 입력을 읽었거나 치명적인 오류로 인해 구문 분석을 중단한 후에 호출됩니다.
이 함수가 ` false `를 반환하면 리더는 구문 분석을 중단하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
startDocument()도 참조하십시오 .
[pure virtual] bool QXmlContentHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
리더는 정격 이름 qName, 로컬 이름 localName, 네임스페이스 URI namespaceURI 을 가진 종료 요소 태그를 구문 분석한 후 이 함수를 호출합니다.
이 함수가 false 을 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 errorString() 함수를 사용하여 오류 메시지를 가져옵니다.
startElement()도 참조하십시오 .
[pure virtual] bool QXmlContentHandler::endPrefixMapping(const QString &prefix)
리더는 접두사 prefix 에 대한 접두사 매핑의 끝을 알리기 위해 이 함수를 호출합니다.
이 함수가 ` false `를 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
startPrefixMapping()도 참조하십시오 .
[pure virtual] QString QXmlContentHandler::errorString() const
리더는 오류 문자열을 얻기 위해 이 함수를 호출합니다. 예를 들어, 핸들러 함수 중 하나가 ` false`를 반환하는 경우 등이 있습니다.
[pure virtual] bool QXmlContentHandler::ignorableWhitespace(const QString &ch)
일부 리더는 이 함수를 사용하여 요소 콘텐츠 내의 각 공백 청크를 보고할 수 있습니다. 공백은 ` ch`로 보고됩니다.
이 함수가 ` false `를 반환하면 리더는 구문 분석을 중단하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
[pure virtual] bool QXmlContentHandler::processingInstruction(const QString &target, const QString &data)
리더는 처리 명령어를 파싱한 후 이 함수를 호출합니다.
target 는 처리 명령의 대상 이름이며, data 는 처리 명령에 포함된 데이터입니다.
이 함수가 ` false `을 반환하면 리더는 구문 분석을 중단하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
[pure virtual] void QXmlContentHandler::setDocumentLocator(QXmlLocator *locator)
리더는 문서 구문 분석을 시작하기 전에 이 함수를 호출합니다. 인자 ` locator `는 ` QXmlLocator `에 대한 포인터로, 이를 통해 애플리케이션은 문서 내의 구문 분석 위치를 확인할 수 있습니다.
locator 를 직접 소멸시키지 마십시오. 이 객체는 리더가 소멸될 때 자동으로 소멸됩니다. (리더가 소멸된 후에는 locator 를 사용하지 마십시오.)
[pure virtual] bool QXmlContentHandler::skippedEntity(const QString &name)
일부 리더는 엔티티의 선언을 확인하지 못한 경우(예: 외부 DTD에 포함되어 있는 경우) 해당 엔티티를 건너뛸 수 있습니다. 이 경우, 리더는 이 함수를 호출하여 ‘ name ’라는 엔티티를 건너뛰었다고 보고합니다.
이 함수가 false 를 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 errorString() 함수를 사용하여 오류 메시지를 가져옵니다.
[pure virtual] bool QXmlContentHandler::startDocument()
리더는 문서 구문 분석을 시작할 때 이 함수를 호출합니다. 리더는 ` setDocumentLocator()` 호출 후, 이 클래스나 ` QXmlDTDHandler ` 클래스의 다른 함수가 호출되기 전에 이 함수를 딱 한 번 호출합니다.
이 함수가 ` false `을 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 ` errorString()` 함수를 사용하여 오류 메시지를 가져옵니다.
endDocument()도 참조하십시오 .
[pure virtual] bool QXmlContentHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
리더는 시작 요소 태그를 파싱한 후 이 함수를 호출합니다.
해당 종료 요소 태그가 읽힐 때 이에 대응하는 ` endElement()` 호출이 발생합니다. `startElement()` 및 ` endElement()` 호출은 항상 올바르게 중첩됩니다. 빈 요소 태그(예: ` <x/>`)의 경우, `startElement()` 호출 직후에 ` endElement()` 호출이 이어집니다.
제공된 속성 목록에는 명시적인 값을 가진 속성만 포함됩니다. 속성 목록에는 리더의 namespace-prefix 속성이 true인 경우에만 네임스페이스 선언에 사용되는 속성(즉, xmlns로 시작하는 속성)이 포함됩니다.
인수 namespaceURI 는 네임스페이스 URI이며, 요소에 네임스페이스 URI가 없거나 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다. localName 는 로컬 이름(접두사 제외)이며, 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다. qName 는 정규화된 이름(접두사 포함)이며, atts 는 요소에 연결된 속성들입니다. 속성이 없는 경우, ` atts `는 빈 속성 객체입니다.
이 함수가 false 를 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 errorString() 함수를 사용하여 오류 메시지를 가져옵니다.
endElement()도 참조하십시오 .
[pure virtual] bool QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri)
리더는 접두사-URI 네임스페이스 매핑 범위의 시작을 알리기 위해 이 함수를 호출합니다. 리더가 요소 및 속성 이름의 접두사를 자동으로 대체하므로, 이 정보는 일반적인 네임스페이스 처리에는 필요하지 않습니다.
startPrefixMapping() 및 endPrefixMapping() 호출이 서로에 대해 올바르게 중첩된다고 보장되지는 않는다는 점에 유의하십시오. 모든 startPrefixMapping() 이벤트는 해당 startElement() 이벤트보다 먼저 발생하고, 모든 endPrefixMapping() 이벤트는 해당 endElement() 이벤트보다 나중에 발생하지만, 그 외의 순서는 보장되지 않습니다.
인자 prefix 는 선언되는 네임스페이스 접두사이며, 인자 uri 는 해당 접두사가 매핑되는 네임스페이스 URI입니다.
이 함수가 false 를 반환하면 리더는 구문 분석을 중지하고 오류를 보고합니다. 리더는 errorString() 함수를 사용하여 오류 메시지를 가져옵니다.
endPrefixMapping()도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.