QXmlStreamReader Class
QXmlStreamReader 클래스는 간단한 스트리밍 API를 통해 잘 형식화된 XML을 읽기 위한 빠른 구문 분석기를 제공합니다. 더 보기...
Header: | #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() |
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을 구문 분석하는 간단한 스트리밍 API를 제공합니다. 이는 전체 XML을 DOM 트리에 먼저 로드하는 대신 사용할 수 있습니다( QDomDocument 참조). QXmlStreamReader는 QIODevice ( setDevice() 참조) 또는 원시 QByteArray ( addData() 참조)에서 데이터를 읽습니다.
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 파서입니다. 따라서 오류가 발생하지 않는 한 애플리케이션 코드는 다음과 같이 보장할 수 있습니다.
- 스트림 리더가 제공한 데이터가 올바른 형식의 XML에 대한 W3C의 기준을 충족합니다,
- 토큰이 유효한 순서로 제공됩니다.
QXmlStreamReader가 오류를 발생시키지 않는 한 다음을 보장합니다:
- 모든 태그가 중첩되고 올바르게 닫힙니다.
- 내부 엔티티에 대한 참조가 올바른 대체 텍스트로 대체되었습니다.
- 속성이 DTD 의 내부 하위 집합에 따라 정규화되거나 추가되었습니다.
- StartDocument 유형의 토큰은 주석 및 처리 지침을 제외하고 다른 모든 토큰보다 먼저 발생합니다.
- DOCTYPE 요소( DTD 유형의 토큰)는 최대 하나만 존재합니다.
- 존재하는 경우 DOCTYPE은 StartDocument, 주석 및 처리 지침을 제외한 다른 모든 요소 앞에 나타납니다.
특히 StartElement, EndElement, Characters, EntityReference 또는 EndDocument 유형의 토큰이 표시되면 StartDocument 또는 DTD 유형의 토큰은 표시되지 않습니다. 입력 스트림에 순서대로 하나라도 있으면 오류가 발생합니다.
참고: 토큰 유형 Comment 및 ProcessingInstruction 은 스트림의 어느 곳에나 나타날 수 있습니다.
구문 분석 중에 오류가 발생하면 atEnd() 및 hasError()는 참을 반환하고 error()는 발생한 오류를 반환합니다. errorString (), lineNumber(), columnNumber(), characterOffset() 함수는 적절한 오류 또는 경고 메시지를 작성하는 데 사용됩니다. 애플리케이션 코드를 간소화하기 위해 QXmlStreamReader에는 설명된 것과 동일한 오류 처리를 트리거하는 사용자 지정 오류를 발생시킬 수 있는 raiseError() 메커니즘이 포함되어 있습니다.
QXmlStream 북마크 예제에서는 재귀적 하강 기법을 사용하여 스트림 리더로 XML 북마크 파일(XBEL)을 읽는 방법을 설명합니다.
네임스페이스
QXmlStream은 XML 네임스페이스를 이해하고 확인합니다. 예를 들어 StartElement 의 경우 namespaceUri()은 요소가 있는 네임스페이스를 반환하고 name()은 요소의 로컬 이름을 반환합니다. namespaceUri 와 name의 조합은 요소를 고유하게 식별합니다. 판독기가 구문 분석한 XML 엔티티에 네임스페이스 접두사가 선언되지 않은 경우 namespaceUri 은 비어 있습니다.
XML 사양에 따라 네임스페이스를 사용하지 않거나 네임스페이스를 전혀 사용하지 않는 XML 데이터를 구문 분석하는 경우 요소의 qualifiedName()를 대신 사용할 수 있습니다. 정규화된 이름은 요소의 prefix() 뒤에 콜론이 오고 그 뒤에 요소의 로컬 name()이 오는 것으로, 원시 XML 데이터에 표시되는 것과 똑같습니다. 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이 스트림에 도착할 때까지 기다리면 이 오류를 복구할 수 있습니다. |
QXmlStreamReader::UnexpectedElementError | 1 | 구문 분석기가 예상한 것과 다른 요소 또는 토큰을 발견했습니다. |
enum QXmlStreamReader::ReadElementTextBehaviour
이 열거형은 readElementText()의 다양한 동작을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QXmlStreamReader::ErrorOnUnexpectedElement | 0 | 하위 요소를 발견하면 UnexpectedElementError 을 발생시키고 지금까지 읽은 내용을 반환합니다. |
QXmlStreamReader::IncludeChildElements | 1 | 하위 요소의 텍스트를 재귀적으로 포함합니다. |
QXmlStreamReader::SkipChildElements | 2 | 하위 요소를 건너뜁니다. |
enum QXmlStreamReader::TokenType
이 열거형은 리더가 방금 읽은 토큰의 유형을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
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(), 표기법 선언은 notationDeclarations(), 엔티티 선언은 entityDeclarations()에서 DTD를 보고합니다. 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 에서 읽는 새 스트림 리더를 만듭니다.
참고: 6.5 이전 Qt 버전에서, 이 생성자는 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()가 있는 경우 이 함수는 아무 작업도 수행하지 않습니다.
참고: 6.5 이전 Qt 버전에서는 이 함수가 QString 와 const char*
에 대해 오버로드되었습니다.
readNext() 및 clear()도 참조하십시오 .
void QXmlStreamReader::addData(const QByteArray &data)
과부하가 걸린 기능입니다.
독자가 읽을 data 을 더 추가합니다. 리더에 device()가 있는 경우 이 함수는 아무 작업도 수행하지 않습니다.
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()가 참을 반환하고 error()가 PrematureEndOfDocumentError 를 반환하면 지금까지 XML이 잘 형성되었지만 완전한 XML 문서가 구문 분석되지 않았음을 의미합니다. 다음 XML 청크는 QByteArray 에서 XML을 읽는 경우 addData()로 추가하거나 QIODevice 에서 XML을 읽는 경우 더 많은 데이터가 도착할 때까지 기다렸다가 추가할 수 있습니다. 어느 쪽이든 더 많은 데이터를 사용할 수 있게 되면 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
이 문서에 명시적인 독립형 선언('yes' 또는 'no' 가능)이 있으면 true
을 반환하고, 그렇지 않으면 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 선언에서 독립적으로 선언된 경우 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 의 네임스페이스Uri를 반환합니다.
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()을 사용하지 말고 확인된 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()
다음 토큰을 읽고 그 유형을 반환합니다.
한 가지 예외를 제외하고, error()가 readNext()에 의해 보고되면 XML 스트림을 더 이상 읽을 수 없습니다. 그런 다음 atEnd()는 true
, hasError()는 true
, 이 함수는 QXmlStreamReader::Invalid 를 반환합니다.
error()가 PrematureEndOfDocumentError 을 반환하는 경우는 예외입니다. 이 오류는 잘 구성된 XML 청크의 끝에 도달했지만 청크가 완전한 XML 문서를 나타내지 않을 때 보고됩니다. 이 경우 QByteArray 에서 스트림을 읽고 있는 경우 addData()를 호출하여 다음 XML 청크를 추가하거나 device()에서 스트림을 읽고 있는 경우 더 많은 데이터가 도착할 때까지 기다렸다가 구문 분석을 다시 시작할 수 있습니다.
tokenType() 및 tokenString()도 참조하세요 .
bool QXmlStreamReader::readNextStartElement()
현재 요소 내의 다음 시작 요소까지 읽습니다. 시작 요소에 도달하면 true
을 반환합니다. 끝 요소에 도달했거나 오류가 발생하면 false가 반환됩니다.
현재 요소는 가장 최근에 구문 분석된 시작 요소와 일치하는 요소 중 아직 일치하는 끝 요소에 도달하지 않은 요소입니다. 구문 분석기가 끝 요소에 도달하면 현재 요소가 부모 요소가 됩니다.
이 기능은 XML 요소 구문 분석에만 관심이 있을 때 편리한 기능입니다. QXmlStream 북마크 예제에서는 이 함수를 광범위하게 사용합니다.
readNext()도 참조하세요 .
void QXmlStreamReader::setDevice(QIODevice *device)
현재 디바이스를 device 로 설정합니다. 디바이스를 설정하면 스트림이 초기 상태로 초기화됩니다.
void QXmlStreamReader::setEntityExpansionLimit(int limit)
단일 엔터티가 확장할 수 있는 최대 문자 수를 limit 으로 설정합니다. 단일 엔터티가 지정된 제한을 초과하여 확장되면 문서가 제대로 형성된 것으로 간주되지 않습니다.
이 제한은 재귀적 엔티티 확장이 사용 가능한 메모리를 모두 소진할 수 있는 알 수 없는 XML 문서를 로드할 때 DoS 공격을 방지하기 위한 것입니다.
이 속성의 기본값은 4096자입니다.
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()도 참조하세요 .
© 2025 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.