QXmlStreamReader Class
QXmlStreamReader 클래스는 간단한 스트리밍 API를 통해 구성이 올바른 XML 1.0 문서를 읽을 수 있는 고속 파서를 제공합니다. 더 보기...
| 헤더: | #include <QXmlStreamReader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QXmlStreamReader는 XML 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
공개 유형
| enum | Error { NoError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, UnexpectedElementError } |
| enum | ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements } |
| enum | TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, …, ProcessingInstruction } |
속성
- namespaceProcessing : bool
공개 함수
| QXmlStreamReader() | |
| QXmlStreamReader(QAnyStringView data) | |
| QXmlStreamReader(QIODevice *device) | |
| QXmlStreamReader(const QByteArray &data) | |
| ~QXmlStreamReader() | |
| void | addData(QAnyStringView data) |
| void | addData(const QByteArray &data) |
| void | addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration) |
| void | addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations) |
| bool | atEnd() const |
| QXmlStreamAttributes | attributes() const |
| qint64 | characterOffset() const |
| void | clear() |
| qint64 | columnNumber() const |
| QIODevice * | device() const |
| QStringView | documentEncoding() const |
| QStringView | documentVersion() const |
| QStringView | dtdName() const |
| QStringView | dtdPublicId() const |
| QStringView | dtdSystemId() const |
| QXmlStreamEntityDeclarations | entityDeclarations() const |
| int | entityExpansionLimit() const |
| QXmlStreamEntityResolver * | entityResolver() const |
| QXmlStreamReader::Error | error() const |
| QString | errorString() const |
| bool | hasError() const |
(since 6.6) bool | hasStandaloneDeclaration() const |
| bool | isCDATA() const |
| bool | isCharacters() const |
| bool | isComment() const |
| bool | isDTD() const |
| bool | isEndDocument() const |
| bool | isEndElement() const |
| bool | isEntityReference() const |
| bool | isProcessingInstruction() const |
| bool | isStandaloneDocument() const |
| bool | isStartDocument() const |
| bool | isStartElement() const |
| bool | isWhitespace() const |
| qint64 | lineNumber() const |
| QStringView | name() const |
| QXmlStreamNamespaceDeclarations | namespaceDeclarations() const |
| bool | namespaceProcessing() const |
| QStringView | namespaceUri() const |
| QXmlStreamNotationDeclarations | notationDeclarations() const |
| QStringView | prefix() const |
| QStringView | processingInstructionData() const |
| QStringView | processingInstructionTarget() const |
| QStringView | qualifiedName() const |
| void | raiseError(const QString &message = QString()) |
| QString | readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement) |
| QXmlStreamReader::TokenType | readNext() |
| bool | readNextStartElement() |
(since 6.10) QString | readRawInnerData() |
| void | setDevice(QIODevice *device) |
| void | setEntityExpansionLimit(int limit) |
| void | setEntityResolver(QXmlStreamEntityResolver *resolver) |
| void | setNamespaceProcessing(bool) |
| void | skipCurrentElement() |
| QStringView | text() const |
| QString | tokenString() const |
| QXmlStreamReader::TokenType | tokenType() const |
상세 설명
QXmlStreamReader는 올바른 형식을 갖춘 XML 1.0 문서를 파싱하기 위한 간단한 스트리밍 API를 제공합니다. 이는 전체 XML을 먼저 DOM 트리로 로드하는 방식( QDomDocument 참조)의 대안입니다. QXmlStreamReader는 QIODevice ( setDevice() 참조) 또는 원시 QByteArray ( addData() 참조)에서 데이터를 읽습니다.
참고: QXmlStreamReader는 XML 버전 1.0만 지원합니다. "1.1"과 같이 다른 버전을 선언한 문서는 구문 분석 오류가 발생합니다.
Qt는 XML 작성을 위해 QXmlStreamWriter 를 제공합니다.
스트림 리더의 기본 개념은 SAX와 유사하게 XML 문서를 토큰의 스트림으로 보고하는 것입니다. QXmlStreamReader와 SAX의 주요 차이점은 이러한 XML 토큰이 보고되는 방식에 있습니다. SAX를 사용할 경우, 애플리케이션은 파서가 편리한 시점에 파서로부터 소위 XML 이벤트를 수신하는 핸들러(콜백 함수)를 제공해야 합니다. QXmlStreamReader를 사용할 경우, 애플리케이션 코드 자체가 루프를 구동하며 필요에 따라 리더에서 토큰을 하나씩 가져옵니다. 이는 ` readNext()`를 호출하여 수행되며, 이때 리더는 다음 토큰을 완료할 때까지 입력 스트림에서 읽은 후, 해당 시점에 ` tokenType()`를 반환합니다. 그런 다음 ` isStartElement()` 및 ` text()`를 포함한 편리한 함수 집합을 사용하여 토큰을 검사하고, 읽은 내용에 대한 정보를 얻을 수 있습니다. 이러한 풀링 방식의 가장 큰 장점은 재귀 하강 파서를 구축할 수 있다는 점으로, 이를 통해 XML 파싱 코드를 여러 메서드나 클래스로 쉽게 분할할 수 있습니다. 덕분에 XML을 파싱할 때 애플리케이션 자체의 상태를 쉽게 추적할 수 있습니다.
QXmlStreamReader를 사용한 일반적인 루프는 다음과 같습니다:
QXmlStreamReader xml;
//...
while (!xml.atEnd()) {
xml.readNext();
//... do processing
}
if (xml.hasError()) {
//... do error handling
}QXmlStreamReader는 잘 구성된 문서를 처리하는, 유효성 검사를 수행하지 않는, 전진 전용 XML 1.0 파서입니다. 이 파서는 외부 파싱된 엔티티를 처리하지 않으며 DTD 유효성 검사도 수행하지 않습니다. 오류가 발생하지 않는 한, 애플리케이션은 다음 사항을 보장받을 수 있습니다:
- XML 콘텐츠가 W3C의 웰폼드 XML 1.0 기준을 충족합니다.
- 내부 엔티티에 대한 참조는 올바른 대체 텍스트로 대체됩니다.
- 속성은 내부 DTD 하위 집합에 따라 정규화되거나 추가됩니다.
- 토큰은 잘 구성된 문서에 맞는 올바른 순서로 제공됩니다.
- StartDocument 토큰(존재하는 경우)은 주석 및 처리 지시문을 제외하고 다른 모든 요소보다 앞에 위치합니다.
- DOCTYPE 요소( DTD 유형의 토큰)는 최대 하나만 존재하며, 존재하는 경우 다른 모든 콘텐츠( StartDocument, 주석 및 처리 지시문 제외)보다 먼저 나타납니다.
특히, StartElement, EndElement, Characters, EntityReference 또는 EndDocument 유형의 토큰이 발견되면, StartDocument 또는 DTD 유형의 토큰은 더 이상 나타나지 않습니다. 입력 스트림에서 순서가 뒤바뀐 상태로 이러한 토큰이 발견되면 오류가 발생합니다.
참고: Comment 및 ProcessingInstruction 유형의토큰은 스트림의 어느 위치에서나 나타날 수 있습니다.
구문 분석 중에 오류가 발생하면 atEnd() 및 hasError()은 true를 반환하고, error()은 발생한 오류를 반환합니다. errorString(), lineNumber(), columnNumber() 및 characterOffset() 함수는 적절한 오류 또는 경고 메시지를 생성하는 데 사용됩니다. 애플리케이션 코드를 단순화하기 위해, QXmlStreamReader에는 앞서 설명한 것과 동일한 오류 처리를 트리거하는 사용자 정의 오류를 발생시킬 수 있는 ` raiseError()` 메커니즘이 포함되어 있습니다.
QXmlStream 북마크 예제는 재귀 하강 기법을 사용하여 스트림 리더로 XML 북마크 파일(XBEL)을 읽는 방법을 보여줍니다.
네임스페이스
QXmlStream은 XML 네임스페이스를 인식하고 해결합니다. 예를 들어, StartElement 의 경우, namespaceUri()는 요소가 속한 네임스페이스를 반환하고, name()는 요소의 로컬 이름을 반환합니다. namespaceUri 와 name의 조합은 요소를 고유하게 식별합니다. 리더가 구문 분석한 XML 엔티티에 네임스페이스 접두사가 선언되지 않은 경우, namespaceUri 는 비어 있습니다.
XML 사양에 따라 네임스페이스를 활용하지 않거나 아예 네임스페이스를 사용하지 않는 XML 데이터를 파싱하는 경우, 대신 해당 요소의 qualifiedName()을 사용할 수 있습니다. 정규화된 이름(qualified name)은 원시 XML 데이터에 요소가 나타나는 방식과 정확히 동일하게, 요소의 정규화된 식별자( prefix) 뒤에 콜론(:)을 붙이고, 그 뒤에 요소의 로컬 식별자( name)를 붙인 형태입니다. namespaceUri 와 접두사 간의 매핑이 유일하지도 않고 보편적이지도 않으므로, 네임스페이스를 준수하는 XML 데이터의 경우 qualifiedName() 사용을 피해야 합니다.
선언되지 않은 네임스페이스 접두사를 사용하는 독립형 문서를 구문 분석하려면, ` namespaceProcessing ` 속성을 사용하여 네임스페이스 처리를 완전히 비활성화할 수 있습니다.
증분 파싱
QXmlStreamReader는 증분 파서입니다. 이 파서는 문서가 여러 조각으로 도착하여(예: 여러 파일에서 또는 네트워크 연결을 통해) 한 번에 모두 구문 분석할 수 없는 경우를 처리할 수 있습니다. 문서가 완전히 구문 분석되기 전에 리더의 데이터가 소진되면, 리더는 PrematureEndOfDocumentError 를 보고합니다. addData() 호출이나 네트워크 device()를 통해 추가 데이터가 도착하면, 리더는 PrematureEndOfDocumentError 오류에서 복구되어 다음 readNext() 호출로 새로운 데이터의 구문 분석을 계속합니다.
예를 들어, 애플리케이션이 network access manager 를 사용하여 네트워크에서 데이터를 읽는 경우, 매니저에게 network request 를 호출하면 network reply 를 반환받게 됩니다. QNetworkReply 는 QIODevice 이므로, 해당 readyRead() 신호를 사용자 정의 슬롯(예: QNetworkAccessManager 에 대한 설명에 제시된 코드 스니펫의 slotReadyRead() )에 연결합니다. 이 슬롯에서 readAll()을 사용하여 사용 가능한 모든 데이터를 읽은 다음, addData()을 사용하여 XML 스트림 리더로 전달합니다. 그런 다음 리더에서 XML 이벤트를 읽는 사용자 정의 파싱 함수를 호출합니다.
성능 및 메모리 사용량
QXmlStreamReader는 전체 XML 문서 트리를 메모리에 저장하지 않고, 보고되는 시점의 현재 토큰만 저장하도록 설계되어 메모리 사용량을 최소화합니다. 또한, QXmlStreamReader는 XML 문서를 편리하고 Qt 스타일의 API에 매핑하는 데 일반적으로 필요한 수많은 작은 문자열 할당을 피합니다. 이는 모든 문자열 데이터를 실제 QString 객체가 아닌 QStringView 로 보고함으로써 이루어집니다. 이러한 객체 중 하나에 대해 toString()를 호출하면 이에 상응하는 실제 QString 객체가 반환됩니다.
멤버 유형 문서
enum QXmlStreamReader::Error
이 열거형은 다양한 오류 사례를 지정합니다
| 상수 | 값 | 설명 |
|---|---|---|
QXmlStreamReader::NoError | 0 | 오류가 발생하지 않았습니다. |
QXmlStreamReader::CustomError | 2 | raiseError() 호출 시 사용자 정의 오류가 발생했습니다. |
QXmlStreamReader::NotWellFormedError | 3 | 읽은 XML이 유효한 형식을 갖지 않아 파서가 내부적으로 오류를 발생시켰습니다. |
QXmlStreamReader::PrematureEndOfDocumentError | 4 | 잘 구성된 XML 문서가 파싱되기 전에 입력 스트림이 종료되었습니다. addData()를 호출하거나 device()에서 XML이 도착할 때까지 기다려 스트림에 더 많은 XML이 도착하면 이 오류에서 복구할 수 있습니다. |
QXmlStreamReader::UnexpectedElementError | 1 | 파서가 예상한 것과 다른 요소나 토큰을 발견했습니다. |
enum QXmlStreamReader::ReadElementTextBehaviour
이 열거형은 ` readElementText()`의 다양한 동작을 지정합니다.
| 상수 | 상수명 | 상수값 |
|---|---|---|
QXmlStreamReader::ErrorOnUnexpectedElement | 0 | 자식 요소를 발견했을 때 UnexpectedElementError 를 발생시키고, 지금까지 읽은 내용을 반환합니다. |
QXmlStreamReader::IncludeChildElements | 1 | 자식 요소의 텍스트를 재귀적으로 포함합니다. |
QXmlStreamReader::SkipChildElements | 2 | 자식 요소를 건너뜁니다. |
enum QXmlStreamReader::TokenType
이 열거형은 리더가 방금 읽은 토큰의 유형을 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QXmlStreamReader::NoToken | 0 | 리더가 아직 아무것도 읽지 않았습니다. |
QXmlStreamReader::Invalid | 1 | 오류가 발생했으며, error() 및 errorString()에서 보고됩니다. |
QXmlStreamReader::StartDocument | 2 | 리더는 documentVersion()에서 XML 버전 번호를 보고하고, documentEncoding()에서 XML 문서에 지정된 인코딩을 보고합니다. 문서가 독립형으로 선언된 경우, isStandaloneDocument()는 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다. |
QXmlStreamReader::EndDocument | 3 | 리더는 문서의 끝을 알립니다. |
QXmlStreamReader::StartElement | 4 | 리더는 namespaceUri() 및 name()을 통해 요소의 시작을 보고합니다. 빈 요소도 StartElement로 보고되며, 그 바로 뒤에 EndElement가 이어집니다. 편의 함수 readElementText()를 호출하여 해당 EndElement까지의 모든 내용을 연결할 수 있습니다. 속성은 attributes()에서, 네임스페이스 선언은 namespaceDeclarations()에서 보고됩니다. |
QXmlStreamReader::EndElement | 5 | 리더는 namespaceUri() 및 name()를 통해 요소의 끝을 보고합니다. |
QXmlStreamReader::Characters | 6 | 리더는 text()을 통해 문자를 보고합니다. 문자가 모두 공백인 경우, isWhitespace()은 true 를 반환합니다. 문자가 CDATA 섹션에서 비롯된 경우, isCDATA()은 true 를 반환합니다. |
QXmlStreamReader::Comment | 7 | 리더는 text()에서 주석을 보고합니다. |
QXmlStreamReader::DTD | 8 | 리더는 text()에서 DTD를, notationDeclarations()에서 표기법 선언을, entityDeclarations()에서 엔티티 선언을 보고합니다. DTD 선언에 대한 세부 정보는 dtdName(), dtdPublicId() 및 dtdSystemId()에서 보고됩니다. |
QXmlStreamReader::EntityReference | 9 | 리더는 해결되지 않은 엔티티 참조를 보고합니다. 참조 이름은 name()에, 대체 텍스트는 text()에 보고됩니다. |
QXmlStreamReader::ProcessingInstruction | 10 | 리더는 processingInstructionTarget() 및 processingInstructionData()에서 처리 지시어를 보고합니다. |
속성 설명서
namespaceProcessing : bool
이 속성은 스트림 리더의 네임스페이스 처리 플래그를 저장합니다.
이 속성은 스트림 리더가 네임스페이스를 처리할지 여부를 제어합니다. 이 속성이 활성화되어 있으면 리더는 네임스페이스를 처리하고, 그렇지 않으면 처리하지 않습니다.
기본적으로 네임스페이스 처리는 활성화되어 있습니다.
액세스 함수:
| bool | namespaceProcessing() const |
| void | setNamespaceProcessing(bool) |
멤버 함수 설명서
QXmlStreamReader::QXmlStreamReader()
스트림 리더를 생성합니다.
setDevice() 및 addData()도 참조하십시오 .
[explicit] QXmlStreamReader::QXmlStreamReader(QAnyStringView data)
data 에서 데이터를 읽는 새로운 스트림 리더를 생성합니다.
참고: Qt 6.5 이전버전에서는 이 생성자가 QString 및 const char* 에 대해 오버로드되었습니다.
addData(), clear() 및 setDevice()도 참조하십시오 .
[explicit] QXmlStreamReader::QXmlStreamReader(QIODevice *device)
device 에서 데이터를 읽어오는 새로운 스트림 리더를 생성합니다.
setDevice() 및 clear()도 참조하십시오 .
[explicit] QXmlStreamReader::QXmlStreamReader(const QByteArray &data)
data 에서 데이터를 읽어오는 새로운 스트림 리더를 생성합니다.
이 함수는 오버로드된 함수입니다.
addData(), clear(), setDevice()도 참조하십시오 .
[noexcept] QXmlStreamReader::~QXmlStreamReader()
독자를 파괴한다.
void QXmlStreamReader::addData(QAnyStringView data)
리더가 읽을 수 있도록 더 많은 ` data `를 추가합니다. 이 함수는 리더가 ` device()`를 가지고 있는 경우 아무 작업도 수행하지 않습니다.
참고: Qt 6.5 이전버전에서는 이 함수가 QString 및 const char* 에 대해 오버로드되어 있었습니다.
readNext() 및 clear()도 참조하십시오 .
void QXmlStreamReader::addData(const QByteArray &data)
독자가 읽을 수 있도록 더 많은 ` data `를 추가합니다. 이 함수는 독자가 ` device()`를 가지고 있는 경우 아무 작업도 수행하지 않습니다.
이 함수는 오버로드된 함수입니다.
readNext() 및 clear()도 참조하십시오 .
void QXmlStreamReader::addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration)
extraNamespaceDeclaration 를 추가합니다. 이 선언은 현재 요소의 자식 요소들에 대해 유효하며, 또는 — 어떤 요소도 읽기 전에 함수가 호출된 경우 — 전체 XML 문서에 대해 유효합니다.
namespaceDeclarations(), addExtraNamespaceDeclarations(), setNamespaceProcessing()도 참조하십시오 .
void QXmlStreamReader::addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations)
extraNamespaceDeclarations 로 지정된 선언 벡터를 추가합니다.
namespaceDeclarations() 및 addExtraNamespaceDeclaration()도 참조하십시오 .
bool QXmlStreamReader::atEnd() const
리더가 XML 문서의 끝까지 읽었거나, ` error()`가 발생하여 읽기가 중단된 경우 ` true `를 반환합니다. 그렇지 않은 경우 ` false`를 반환합니다.
atEnd()와 hasError()가 true를 반환하고 error()가 PrematureEndOfDocumentError 를 반환하는 경우, 이는 지금까지 XML이 유효한 형식을 갖추고 있지만 완전한 XML 문서가 아직 파싱되지 않았음을 의미합니다. XML이 QByteArray 에서 읽혀지고 있는 경우 addData()을 사용하여 다음 XML 청크를 추가할 수 있으며, XML이 QIODevice 에서 읽혀지고 있는 경우 추가 데이터가 도착할 때까지 기다리면 됩니다. 어느 경우든, 추가 데이터가 준비되면 atEnd()는 false를 반환합니다.
hasError(), error(), device(), QIODevice::atEnd()도 참조하십시오 .
QXmlStreamAttributes QXmlStreamReader::attributes() const
StartElement 의 속성을 반환합니다.
qint64 QXmlStreamReader::characterOffset() const
0부터 시작하는 현재 문자 오프셋을 반환합니다.
lineNumber() 및 columnNumber()도 참조하십시오 .
void QXmlStreamReader::clear()
리더에서 device() 또는 데이터를 모두 제거하고 내부 상태를 초기 상태로 재설정합니다.
addData()도 참조하십시오 .
qint64 QXmlStreamReader::columnNumber() const
0부터 시작하는 현재 열 번호를 반환합니다.
lineNumber() 및 characterOffset()도 참조하십시오 .
QIODevice *QXmlStreamReader::device() const
QXmlStreamReader 에 연결된 현재 장치를 반환하며, 할당된 장치가 없는 경우 nullptr 을 반환합니다.
setDevice()도 참조하십시오 .
QStringView QXmlStreamReader::documentEncoding() const
tokenType()의 값이 StartDocument 인 경우, 이 함수는 XML 선언에 명시된 인코딩 문자열을 반환합니다. 그렇지 않은 경우 빈 문자열이 반환됩니다.
QStringView QXmlStreamReader::documentVersion() const
tokenType()의 값이 StartDocument 일 경우, 이 함수는 XML 선언에 명시된 버전 문자열을 반환합니다. 그렇지 않은 경우 빈 문자열이 반환됩니다.
QStringView QXmlStreamReader::dtdName() const
tokenType()의 값이 DTD 인 경우, 이 함수는 DTD의 이름을 반환합니다. 그렇지 않은 경우 빈 문자열을 반환합니다.
QStringView QXmlStreamReader::dtdPublicId() const
tokenType()의 값이 DTD 인 경우, 이 함수는 DTD의 공용 식별자를 반환합니다. 그렇지 않은 경우 빈 문자열이 반환됩니다.
QStringView QXmlStreamReader::dtdSystemId() const
tokenType()의 값이 DTD 인 경우, 이 함수는 DTD의 시스템 식별자를 반환합니다. 그렇지 않은 경우 빈 문자열이 반환됩니다.
QXmlStreamEntityDeclarations QXmlStreamReader::entityDeclarations() const
tokenType()의 값이 DTD 인 경우, 이 함수는 DTD의 구문 분석되지 않은 (외부) 엔티티 선언을 반환합니다. 그렇지 않은 경우 빈 벡터를 반환합니다.
QXmlStreamEntityDeclarations 클래스는 QXmlStreamEntityDeclaration 의 QList 로 정의됩니다.
int QXmlStreamReader::entityExpansionLimit() const
단일 엔티티가 확장될 수 있는 최대 문자 수를 반환합니다. 단일 엔티티가 지정된 제한을 초과하여 확장될 경우, 해당 문서는 올바른 형식을 갖춘 것으로 간주되지 않습니다.
setEntityExpansionLimit도 참조하십시오 .
QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const
엔티티 리졸버를 반환하거나, 엔티티 리졸버가 없는 경우 nullptr 를 반환합니다.
setEntityResolver()도 참조하십시오 .
QXmlStreamReader::Error QXmlStreamReader::error() const
현재 오류의 유형을 반환하거나, 오류가 발생하지 않은 경우 NoError 을 반환합니다.
errorString() 및 raiseError()도 참조하십시오 .
QString QXmlStreamReader::errorString() const
raiseError()를 통해 설정된 오류 메시지를 반환합니다.
error(), lineNumber(), columnNumber(), characterOffset()도 참조하십시오 .
bool QXmlStreamReader::hasError() const
오류가 발생하면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.
errorString() 및 error()도 참조하십시오 .
[since 6.6] bool QXmlStreamReader::hasStandaloneDeclaration() const
이 문서에 명시적인 독립 문서 선언이 있는 경우 true 를 반환합니다(‘yes’ 또는 ‘no’일 수 있음). 그렇지 않은 경우 false 를 반환합니다.
XML 선언이 파싱되지 않은 경우, 이 함수는 ` false`를 반환합니다.
이 함수는 Qt 6.6에서 도입되었습니다.
isStandaloneDocument()도 참조하십시오 .
bool QXmlStreamReader::isCDATA() const
리더가 CDATA 섹션에서 유래한 문자를 보고하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
isCharacters() 및 text()도 참조하십시오 .
bool QXmlStreamReader::isCharacters() const
tokenType()의 결과가 Characters 와 같으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.
isWhitespace() 및 isCDATA()도 참조하십시오 .
bool QXmlStreamReader::isComment() const
tokenType()의 결과가 Comment 와 같을 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
bool QXmlStreamReader::isDTD() const
tokenType()의 결과가 DTD 과 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isEndDocument() const
tokenType()의 결과가 EndDocument 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isEndElement() const
tokenType()의 결과가 EndElement 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isEntityReference() const
tokenType()의 결과가 EntityReference 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isProcessingInstruction() const
tokenType()의 결과가 ProcessingInstruction 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isStandaloneDocument() const
이 문서가 XML 선언에서 독립형(standalone)으로 선언된 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.
XML 선언이 구문 분석되지 않은 경우, 이 함수는 ` false`를 반환합니다.
hasStandaloneDeclaration()도 참조하십시오 .
bool QXmlStreamReader::isStartDocument() const
tokenType()의 결과가 StartDocument 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isStartElement() const
tokenType()의 결과가 StartElement 와 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
bool QXmlStreamReader::isWhitespace() const
리더가 공백으로만 구성된 문자를 보고하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
isCharacters() 및 text()도 참조하십시오 .
qint64 QXmlStreamReader::lineNumber() const
현재 줄 번호를 1부터 시작하여 반환합니다.
columnNumber() 및 characterOffset()도 참조하십시오 .
QStringView QXmlStreamReader::name() const
StartElement, EndElement 또는 EntityReference 의 로컬 이름을 반환합니다.
namespaceUri() 및 qualifiedName()도 참조하십시오 .
QXmlStreamNamespaceDeclarations QXmlStreamReader::namespaceDeclarations() const
tokenType()의 값이 StartElement 인 경우, 이 함수는 해당 요소의 네임스페이스 선언을 반환합니다. 그렇지 않은 경우 빈 벡터를 반환합니다.
QXmlStreamNamespaceDeclarations 클래스는 QXmlStreamNamespaceDeclaration 의 QList 로 정의됩니다.
addExtraNamespaceDeclaration() 및 addExtraNamespaceDeclarations()도 참조하십시오 .
QStringView QXmlStreamReader::namespaceUri() const
StartElement 또는 EndElement 의 namespaceUri를 반환합니다.
name() 및 qualifiedName()도 참조하십시오 .
QXmlStreamNotationDeclarations QXmlStreamReader::notationDeclarations() const
tokenType()의 값이 DTD 인 경우, 이 함수는 DTD의 표기법 선언을 반환합니다. 그렇지 않은 경우 빈 벡터를 반환합니다.
QXmlStreamNotationDeclarations 클래스는 QXmlStreamNotationDeclaration 의 QList 로 정의됩니다.
QStringView QXmlStreamReader::prefix() const
StartElement 또는 EndElement 의 접두사를 반환합니다.
name() 및 qualifiedName()도 참조하십시오 .
QStringView QXmlStreamReader::processingInstructionData() const
ProcessingInstruction 의 데이터를 반환합니다.
QStringView QXmlStreamReader::processingInstructionTarget() const
ProcessingInstruction 의 대상을 반환합니다.
QStringView QXmlStreamReader::qualifiedName() const
StartElement 또는 EndElement 의 정규화된 이름을 반환합니다.
정규화된 이름은 XML 데이터 내 요소의 원시 이름입니다. 이는 네임스페이스 접두사, 콜론(:), 그리고 요소의 로컬 이름으로 구성됩니다. 네임스페이스 접두사는 고유하지 않으므로(동일한 접두사가 서로 다른 네임스페이스를 가리킬 수 있고, 서로 다른 접두사가 동일한 네임스페이스를 가리킬 수 있음), qualifiedName()을 사용해서는 안 되며, 대신 resolved namespaceUri() 및 속성의 로컬 name()을 사용해야 합니다.
name(), prefix() 및 namespaceUri()도 참조하십시오 .
void QXmlStreamReader::raiseError(const QString &message = QString())
선택적 오류 message 를 포함하는 사용자 정의 오류를 발생시킵니다.
error() 및 errorString()도 참조하십시오 .
QString QXmlStreamReader::readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement)
StartElement 가 읽힌 경우 호출되는 편의 함수입니다. 해당 EndElement 까지 읽은 후 그 사이의 모든 텍스트를 반환합니다. 오류가 없는 경우, 이 함수를 호출한 후의 현재 토큰( tokenType() 참조)은 EndElement 입니다.
이 함수는 Characters 또는 EntityReference 토큰을 읽을 때 text()을 연결하지만, ProcessingInstruction 및 Comment 는 건너뜁니다. 현재 토큰이 StartElement 가 아닌 경우, 빈 문자열이 반환됩니다.
behaviour 는 EndElement 에 도달하기 전에 다른 내용이 읽힐 경우 어떻게 처리할지 정의합니다. 이 함수는 자식 요소의 텍스트를 포함할 수 있고(예: HTML에서 유용함), 자식 요소를 무시할 수 있으며, UnexpectedElementError 예외를 발생시키고 지금까지 읽은 내용을 반환할 수도 있습니다(기본값).
QXmlStreamReader::TokenType QXmlStreamReader::readNext()
다음 토큰을 읽어서 그 유형을 반환합니다.
한 가지 예외를 제외하고, readNext()가 error()를 반환하면 더 이상 XML 스트림을 읽을 수 없습니다. 이 경우 atEnd()는 true 를, hasError()는 true 를 반환하며, 이 함수는 QXmlStreamReader::Invalid 를 반환합니다.
단, error()이 PrematureEndOfDocumentError 를 반환하는 경우는 예외입니다. 이 오류는 형식적으로 올바른 XML 청크의 끝 부분에 도달했으나, 해당 청크가 완전한 XML 문서를 나타내지 않을 때 보고됩니다. 이 경우, 스트림이 QByteArray 에서 읽혀지는 중이라면 addData()를 호출하여 다음 XML 청크를 추가하거나, 스트림이 device()에서 읽혀지는 중이라면 더 많은 데이터가 도착할 때까지 기다림으로써 파싱을 재개할 수 있습니다.
tokenType() 및 tokenString()도 참조하십시오 .
bool QXmlStreamReader::readNextStartElement()
현재 요소 내에서 다음 시작 요소까지 읽습니다. 시작 요소에 도달하면 ` true `를 반환합니다. 끝 요소에 도달했거나 오류가 발생한 경우 `false`를 반환합니다.
현재 요소는 가장 최근에 구문 분석된 시작 요소와 일치하며, 아직 일치하는 종료 요소에 도달하지 않은 요소입니다. 파서가 종료 요소에 도달하면 현재 요소는 상위 요소가 됩니다.
이 함수는 XML 요소 파싱에만 관심이 있을 때 사용하기 편리한 함수입니다. QXmlStream Bookmarks 예제에서는 이 함수를 광범위하게 사용합니다.
readNext()도 참조하십시오 .
[since 6.10] QString QXmlStreamReader::readRawInnerData()
현재 요소의 원시 내부 XML 내용을 읽어서 반환합니다. 이 함수는 중첩된 태그, 텍스트, 주석, 처리 지시문, CDATA 섹션 및 기타 마크업을 포함하여 요소 내에 삽입된 전체 내용을 원본 XML 구조를 유지한 채로 가져오는 데 유용합니다.
현재 요소는 가장 최근에 구문 분석된 시작 요소와 일치하며, 아직 일치하는 종료 요소에 도달하지 않은 요소입니다. 파서가 종료 요소에 도달하면 현재 요소는 상위 요소가 됩니다.
참고: DTD에 정의된엔티티 참조는 파싱 중에 해결되어 일반 텍스트로 반환됩니다. DTD 선언은 별도로 처리되며 요소 콘텐츠의 일부가 아니기 때문입니다. 출력에서는 5개의 사전 정의된 XML 엔티티(<, >, &, ', ")만 다시 이스케이프 처리됩니다.
이 함수는 Qt 6.10에서 도입되었습니다.
void QXmlStreamReader::setDevice(QIODevice *device)
현재 장치를 device 로 설정합니다. 장치를 설정하면 스트림이 초기 상태로 재설정됩니다.
void QXmlStreamReader::setEntityExpansionLimit(int limit)
단일 엔티티가 확장될 수 있는 최대 문자 수를 ` limit`로 설정합니다. 단일 엔티티가 지정된 제한을 초과하여 확장될 경우, 해당 문서는 올바른 형식을 갖춘 것으로 간주되지 않습니다.
이 제한은 알 수 없는 XML 문서를 로드할 때 재귀적 엔티티 확장이 사용 가능한 메모리를 모두 소진시켜 서비스 거부(DoS) 공격이 발생하는 것을 방지하기 위해 마련되었습니다.
이 속성의 기본값은 4096자입니다.
최소값은 1이며, 이는 내장 XML 엔티티(< 등)를 지원하기 위함입니다.
entityExpansionLimit도 참조하십시오 .
void QXmlStreamReader::setEntityResolver(QXmlStreamEntityResolver *resolver)
resolver 를 새로운 entityResolver()로 만듭니다.
스트림 리더는 리졸버에 대한 소유권을 가져가지 않습니다. 스트림 리더 객체의 전체 수명 주기 동안, 또는 다른 리졸버나 ` nullptr `가 설정될 때까지 리졸버가 유효한지 확인하는 것은 호출자의 책임입니다.
entityResolver()도 참조하십시오 .
void QXmlStreamReader::skipCurrentElement()
자식 노드는 모두 건너뛰고 현재 요소의 끝까지 읽습니다. 이 함수는 알 수 없는 요소를 건너뛰는 데 유용합니다.
현재 요소는 가장 최근에 구문 분석된 시작 요소와 일치하며, 아직 일치하는 종료 요소에 도달하지 않은 요소입니다. 파서가 종료 요소에 도달하면 현재 요소는 상위 요소가 됩니다.
QStringView QXmlStreamReader::text() const
Characters, Comment, DTD 또는 EntityReference 의 텍스트를 반환합니다.
QString QXmlStreamReader::tokenString() const
리더의 현재 토큰을 문자열로 반환합니다.
tokenType()도 참조하십시오 .
QXmlStreamReader::TokenType QXmlStreamReader::tokenType() const
현재 토큰의 유형을 반환합니다.
현재 토큰은 다음 편의 함수를 사용하여 조회할 수도 있습니다: isStartDocument(), isEndDocument(), isStartElement(), isEndElement(), isCharacters(), isComment(), isDTD(), isEntityReference(), isProcessingInstruction().
tokenString()도 참조하십시오 .
© 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.