이 페이지에서

QXmlSimpleReader Class

QXmlSimpleReader 클래스는 간단한 XML 파서 구현을 제공합니다. 더 보기...

헤더: #include <QXmlSimpleReader>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat
상속: QXmlReader

경고: 이 클래스는 재진입 가능하지 않습니다.

공개 함수

QXmlSimpleReader()
virtual ~QXmlSimpleReader()
virtual bool parse(const QXmlInputSource *input, bool incremental)
virtual bool parseContinue()

재구현된 공용 함수

virtual QXmlDTDHandler *DTDHandler() const override
virtual QXmlContentHandler *contentHandler() const override
virtual QXmlDeclHandler *declHandler() const override
virtual QXmlEntityResolver *entityResolver() const override
virtual QXmlErrorHandler *errorHandler() const override
virtual bool feature(const QString &name, bool *ok = nullptr) const override
virtual bool hasFeature(const QString &name) const override
virtual bool hasProperty(const QString &name) const override
virtual QXmlLexicalHandler *lexicalHandler() const override
virtual bool parse(const QXmlInputSource &input) override
virtual bool parse(const QXmlInputSource *input) override
virtual void *property(const QString &name, bool *ok = nullptr) const override
virtual void setContentHandler(QXmlContentHandler *handler) override
virtual void setDTDHandler(QXmlDTDHandler *handler) override
virtual void setDeclHandler(QXmlDeclHandler *handler) override
virtual void setEntityResolver(QXmlEntityResolver *handler) override
virtual void setErrorHandler(QXmlErrorHandler *handler) override
virtual void setFeature(const QString &name, bool enable) override
virtual void setLexicalHandler(QXmlLexicalHandler *handler) override
virtual void setProperty(const QString &name, void *value) override

상세 설명

이 XML 리더는 광범위한 응용 프로그램에 적합합니다. 이 리더는 잘 구성된 XML을 구문 분석할 수 있으며, 요소의 네임스페이스를 콘텐츠 핸들러에 보고할 수 있습니다. 그러나 외부 엔티티는 구문 분석하지 않습니다. 역사적인 이유로, XML 1.0 사양에 설명된 속성 값 정규화 및 줄 끝 처리는 수행되지 않습니다.

이 클래스를 사용하는 가장 쉬운 방법은 리더 인스턴스를 생성하고, 입력 소스를 정의하고, 리더가 사용할 핸들러를 지정하고, 데이터를 구문 분석하는 것입니다.

예를 들어, ` QFile `를 사용하여 입력을 제공할 수 있습니다. 여기서는 리더를 생성하고, 리더가 사용할 입력 소스를 정의합니다:

    QXmlSimpleReader xmlReader;
    QXmlInputSource *source = new QXmlInputSource(file);

핸들러를 사용하면 리더가 특정 유형의 콘텐츠를 만나거나 입력에서 오류가 발견되었을 때 작업을 수행할 수 있습니다. 리더에게는 각 이벤트 유형에 대해 어떤 핸들러를 사용할지 알려주어야 합니다. 많은 일반적인 응용 프로그램의 경우, ` QXmlDefaultHandler`을 상속하여 사용자 정의 핸들러를 생성하고, 이를 사용하여 오류 및 콘텐츠 이벤트를 모두 처리할 수 있습니다:

    Handler *handler = new Handler;
    xmlReader.setContentHandler(handler);
    xmlReader.setErrorHandler(handler);

최소한 콘텐츠 핸들러와 오류 핸들러를 설정하지 않으면, 파서는 기본 동작으로 돌아가 아무런 작업도 수행하지 않습니다.

입력을 처리하는 가장 편리한 방법은 입력 소스를 지정하는 인자를 사용하여 ` parse()` 함수를 호출해 한 번에 읽어들이는 것입니다:

    bool ok = xmlReader.parse(source);

    if (!ok)
        std::cout << "Parsing failed." << std::endl;

입력 전체를 한 번에 파싱할 수 없는 경우(예: 입력 크기가 매우 크거나 네트워크 연결을 통해 전송되는 경우), 데이터를 조각 단위로 파서에 전달할 수 있습니다. 이는 parse() 함수에 증분 처리를 지시하고, 모든 데이터가 처리될 때까지 parseContinue() 함수를 반복적으로 호출함으로써 달성됩니다.

증분 파싱을 수행하는 일반적인 방법은 network reply 의 readyRead() 신호를 슬롯에 연결하고, 그곳에서 들어오는 데이터를 처리하는 것입니다. QNetworkAccessManager 을 참조하십시오.

setFeature() 및 setProperty()을 사용하여 파싱 동작의 여러 측면을 조정할 수 있습니다.

xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);

QXmlSimpleReader는 재진입 가능하지 않습니다. 스레드 기반 코드에서 이 클래스를 사용하려면 QMutex 과 같은 잠금 메커니즘을 사용하여 QXmlSimpleReader가 포함된 코드를 잠그십시오.

이 클래스는 이제 사용 중단되었으므로, XML 파일을 읽을 때는 QXmlStreamReader 또는 QDomDocument를 사용하십시오.

멤버 함수 문서

QXmlSimpleReader::QXmlSimpleReader()

간단한 XML 리더를 생성합니다.

[virtual noexcept] QXmlSimpleReader::~QXmlSimpleReader()

간단한 XML 리더를 제거합니다.

[override virtual] QXmlDTDHandler *QXmlSimpleReader::DTDHandler() const

QXmlReader::DTDHandler() const를 재구현합니다.

setDTDHandler()도 참조하십시오 .

[override virtual] QXmlContentHandler *QXmlSimpleReader::contentHandler() const

QXmlReader::contentHandler() const를 재구현합니다.

setContentHandler()도 참조하십시오 .

[override virtual] QXmlDeclHandler *QXmlSimpleReader::declHandler() const

QXmlReader::declHandler() const를 재구현합니다.

setDeclHandler()도 참조하십시오 .

[override virtual] QXmlEntityResolver *QXmlSimpleReader::entityResolver() const

QXmlReader::entityResolver() const를 재구현합니다.

setEntityResolver()도 참조하십시오 .

[override virtual] QXmlErrorHandler *QXmlSimpleReader::errorHandler() const

QXmlReader::errorHandler() const를 재구현합니다.

setErrorHandler()도 참조하십시오 .

[override virtual] bool QXmlSimpleReader::feature(const QString &name, bool *ok = nullptr) const

QXmlReader::feature(const QString &name, bool *ok) const를 재구현합니다.

setFeature()도 참조하십시오 .

[override virtual] bool QXmlSimpleReader::hasFeature(const QString &name) const

QXmlReader::hasFeature(const QString &name) const를 재구현합니다.

[override virtual] bool QXmlSimpleReader::hasProperty(const QString &name) const

QXmlReader::hasProperty(const QString &name) const를 재구현합니다.

[override virtual] QXmlLexicalHandler *QXmlSimpleReader::lexicalHandler() const

QXmlReader::lexicalHandler() const를 재구현합니다.

setLexicalHandler()도 참조하십시오 .

[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource &input)

QXmlReader::parse(const QXmlInputSource &input)를 재구현합니다.

[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input)

QXmlReader::parse(const QXmlInputSource *input)을 재구현합니다.

input 에서 XML 문서를 읽어와 한 번에(비증분 방식으로) 파싱합니다. 파싱이 성공하면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

[virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input, bool incremental)

input 에서 XML 문서를 읽어와 구문 분석합니다. 구문 분석이 성공적으로 완료되면 ` true `를 반환하고, 그렇지 않은 경우 오류가 발생했음을 나타내는 ` false`를 반환합니다.

incremental 가 false인 경우, XML 파일이 완전히 읽히지 않으면 이 함수는 false를 반환합니다. 이 경우 구문 분석은 계속될 수 없습니다.

incremental 가 true인 경우, 파서가 XML 파일의 끝까지 도달하기 전에 input 의 끝에 도달하더라도 false를 반환하지 않습니다. 대신 파서의 상태를 저장하여, 나중에 더 많은 데이터가 확보되었을 때 구문 분석을 계속할 수 있도록 합니다. 이러한 경우, parseContinue() 함수를 사용하여 구문 분석을 계속할 수 있습니다. 이 클래스는 입력 소스 input 에 대한 포인터를 저장하며, parseContinue() 함수는 해당 입력 소스에서 데이터를 읽으려고 시도합니다. 따라서 parseContinue()을 더 이상 호출할 필요가 없을 때까지 입력 소스 input 를 삭제해서는 안 됩니다.

증분 구문 분석이 진행 중인 상태에서 incremental 가 true로 설정된 상태로 이 함수가 호출되면, 새로운 구문 분석 세션이 시작되고 이전 세션은 소실됩니다.

parseContinue() 및 QTcpSocket도 참조하십시오 .

[virtual] bool QXmlSimpleReader::parseContinue()

가장 최근에 parse()를 호출할 때 지정된 QXmlInputSource 에서 입력을 받아 증분 파싱을 계속합니다. 이 함수를 사용하려면 parse()를 호출할 때 incremental 인수를 true로 설정 해야 합니다.

파싱 오류가 발생하면 false 를 반환하고, 그렇지 않은 경우 XML 파일의 끝 부분에 도달하지 않았더라도 true 를 반환합니다. 파싱할 데이터가 더 생기면 이 함수를 다시 호출하여 나중에 파싱을 계속할 수 있습니다.

입력 소스에 처리할 데이터가 없는 상태에서 이 함수를 호출하면, 리더에게 XML 파일의 끝 부분에 도달했음을 알립니다. 이 시점까지 제공된 입력의 구성이 올바르지 않은 경우 구문 분석 오류가 발생하며 false가 반환됩니다. 입력된 데이터가 유효한 형식(well-formed)이라면 true가 반환됩니다. 리더를 재사용하여 다른 XML 파일을 파싱할 수 있도록 하려면 이러한 방식으로 입력을 종료하는 것이 중요합니다.

파일 끝 부분에 도달한 후, 분석할 데이터가 없는 상태에서 이 함수를 호출하면 이전 입력의 구성이 올바른지 여부와 관계없이 false가 반환됩니다.

parse(), QXmlInputSource::data() 및 QXmlInputSource::next()도 참조하십시오 .

[override virtual] void *QXmlSimpleReader::property(const QString &name, bool *ok = nullptr) const

QXmlReader::property(const QString &name, bool *ok) const를 재구현합니다.

setProperty()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setContentHandler(QXmlContentHandler *handler)

QXmlReader::setContentHandler(QXmlContentHandler *handler)를 재구현합니다.

contentHandler()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setDTDHandler(QXmlDTDHandler *handler)

QXmlReader::setDTDHandler(QXmlDTDHandler *handler)를 재구현합니다.

[override virtual] void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler *handler)

QXmlReader::setDeclHandler(QXmlDeclHandler *handler)를 재구현합니다.

declHandler()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setEntityResolver(QXmlEntityResolver *handler)

QXmlReader::setEntityResolver(QXmlEntityResolver *handler)을 재구현합니다.

entityResolver()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)

QXmlReader::setErrorHandler(QXmlErrorHandler *handler)를 재구현합니다.

errorHandler()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setFeature(const QString &name, bool enable)

QXmlReader::setFeature(const QString &name, bool value)를 재구현합니다.

enable 가 true인 경우 name 기능을 켜고, 그렇지 않은 경우 끕니다.

name 매개변수는 다음 문자열 중 하나여야 합니다:

기능기본값참고
http://xml.org/sax/features/namespacestrue이 옵션이 활성화되면 네임스페이스가 콘텐츠 핸들러에 보고됩니다.
http://xml.org/sax/features/namespace-prefixesfalse이 옵션이 활성화되면 네임스페이스 선언에 사용된 원래의 접두사가 붙은 이름과 속성이 보고됩니다.
http://qt-project.org/xml/features/report-whitespace-only-CharDatatrue이 옵션이 활성화되면, 공백 문자로만 구성된 CharData는 QXmlContentHandler::characters()를 사용하여 보고됩니다. 비활성화되면 공백은 아무런 알림 없이 무시됩니다.
http://qt-project.org/xml/features/report-start-end-entityfalse이 옵션이 활성화되면 파서는 QXmlContentHandler::startEntity() 및 QXmlContentHandler::endEntity() 이벤트를 보고하므로, 문자 데이터가 여러 청크로 보고될 수 있습니다. 비활성화되면 파서는 이러한 이벤트를 보고하지 않고 엔티티를 조용히 대체한 뒤, 문자 데이터를 하나의 청크로 보고합니다.

feature() 및 hasFeature()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler *handler)

QXmlReader::setLexicalHandler(QXmlLexicalHandler *handler)를 재구현합니다.

lexicalHandler()도 참조하십시오 .

[override virtual] void QXmlSimpleReader::setProperty(const QString &name, void *value)

QXmlReader::setProperty(const QString &name, void *value)를 재구현합니다.

property()도 참조하십시오 .

© 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.