QXmlStreamWriter Class

QXmlStreamWriter 클래스는 XML 라이터에 간단한 스트리밍 API를 제공합니다. 더 보기...

Header: #include <QXmlStreamWriter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 재진입합니다.

속성

공공 기능

QXmlStreamWriter()
QXmlStreamWriter(QByteArray *array)
QXmlStreamWriter(QIODevice *device)
QXmlStreamWriter(QString *string)
~QXmlStreamWriter()
bool autoFormatting() const
int autoFormattingIndent() const
QIODevice *device() const
bool hasError() const
void setAutoFormatting(bool enable)
void setAutoFormattingIndent(int spacesOrTabs)
void setDevice(QIODevice *device)
void writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value)
void writeAttribute(const QXmlStreamAttribute &attribute)
void writeAttribute(QAnyStringView qualifiedName, QAnyStringView value)
void writeAttributes(const QXmlStreamAttributes &attributes)
void writeCDATA(QAnyStringView text)
void writeCharacters(QAnyStringView text)
void writeComment(QAnyStringView text)
void writeCurrentToken(const QXmlStreamReader &reader)
void writeDTD(QAnyStringView dtd)
void writeDefaultNamespace(QAnyStringView namespaceUri)
void writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name)
void writeEmptyElement(QAnyStringView qualifiedName)
void writeEndDocument()
void writeEndElement()
void writeEntityReference(QAnyStringView name)
void writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {})
void writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {})
void writeStartDocument(QAnyStringView version)
void writeStartDocument(QAnyStringView version, bool standalone)
void writeStartDocument()
void writeStartElement(QAnyStringView namespaceUri, QAnyStringView name)
void writeStartElement(QAnyStringView qualifiedName)
void writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text)
void writeTextElement(QAnyStringView qualifiedName, QAnyStringView text)

상세 설명

QXmlStreamWriter는 XML 작성을 위한 QXmlStreamReader 에 대응하는 클래스입니다. 관련 클래스와 마찬가지로 setDevice()로 지정된 QIODevice 에서 작동합니다. API는 간단하고 직관적입니다. 작성하려는 모든 XML 토큰 또는 이벤트에 대해 작성기는 특수 함수를 제공합니다.

writeStartDocument()로 문서를 시작하고 writeEndDocument()로 끝내면 됩니다. 그러면 나머지 열려 있는 모든 태그가 암시적으로 닫힙니다.

요소 태그는 writeStartElement() 다음에 writeAttribute() 또는 writeAttributes(), 요소 콘텐츠, writeEndElement()로 열립니다. 더 짧은 형식인 writeEmptyElement()를 사용하여 빈 요소를 작성한 다음 writeAttributes()을 사용할 수 있습니다.

요소 콘텐츠는 문자, 엔티티 참조 또는 중첩된 요소로 구성됩니다. writeCharacters ()로 작성되며, 금지된 모든 문자와 문자 시퀀스, writeEntityReference() 또는 writeStartElement()로의 후속 호출을 이스케이프 처리하는 것도 처리합니다. 텍스트만 포함된 터미널 요소를 작성할 때는 writeTextElement()라는 편리한 방법을 사용할 수 있습니다.

다음 요약 코드 스니펫은 들여쓰기가 있는 형식의 XML을 작성하는 클래스의 기본 사용법을 보여줍니다:

    QXmlStreamWriter stream(&output);
    stream.setAutoFormatting(true);
    stream.writeStartDocument();
    ...
    stream.writeStartElement("bookmark");
    stream.writeAttribute("href", "http://qt-project.org/");
    stream.writeTextElement("title", "Qt Project");
    stream.writeEndElement(); // bookmark
    ...
    stream.writeEndDocument();

네임스페이스 접두사 지정은 QXmlStreamWriter가 처리하므로 요소나 속성을 작성할 때 namespaceUri 을 지정하기만 하면 됩니다. 특정 접두사를 준수해야 하는 경우 writeNamespace() 또는 writeDefaultNamespace()로 네임스페이스를 수동으로 선언하여 작성기가 해당 접두사를 사용하도록 강제할 수 있습니다. 또는 스트림 작성기의 네임스페이스 지원을 우회하고 대신 정규화된 이름을 사용하는 오버로드된 메서드를 사용할 수 있습니다. 네임스페이스 http://www.w3.org/XML/1998/namespace 는 암시적이며 접두사 xml에 매핑됩니다.

스트림 작성기는 요소 사이의 빈 섹션에 줄 바꿈과 들여쓰기를 추가하여 생성된 XML 데이터의 형식을 자동으로 지정할 수 있으므로 사람이 XML 데이터를 더 읽기 쉽게 만들고 대부분의 소스 코드 관리 시스템에서 작업하기 쉽습니다. 이 기능은 autoFormatting 속성으로 켜고 autoFormattingIndent 속성으로 사용자 지정할 수 있습니다.

다른 기능은 writeCDATA(), writeComment(), writeProcessingInstruction() 및 writeDTD()입니다. XML 스트림의 연쇄는 writeCurrentToken()로 지원됩니다.

QXmlStreamWriter는 항상 XML을 UTF-8로 인코딩합니다.

기본 장치에 쓰는 동안 오류가 발생하면 hasError()가 참을 반환하기 시작하고 후속 쓰기는 무시됩니다.

QXmlStream 북마크 예제는 스트림 작성기를 사용하여 이전에 QXmlStreamReader 에서 읽은 XML 북마크 파일(XBEL)을 작성하는 방법을 보여줍니다.

속성 문서

autoFormatting : bool

이 프로퍼티에는 스트림 작성기의 자동 포맷 플래그가 있습니다.

이 속성은 스트림 작성기가 생성된 XML 데이터의 서식을 자동으로 지정할지 여부를 제어합니다. 활성화된 경우, 작성기는 요소 사이의 빈 섹션에 줄 바꿈과 들여쓰기를 자동으로 추가합니다(무시할 수 있는 공백). 자동 서식 지정의 주요 목적은 데이터를 여러 줄로 분할하여 사람이 읽을 수 있도록 가독성을 높이는 것입니다. 들여쓰기 깊이는 autoFormattingIndent 속성을 통해 제어할 수 있습니다.

기본적으로 자동 서식 지정은 비활성화되어 있습니다.

함수 액세스:

bool autoFormatting() const
void setAutoFormatting(bool enable)

autoFormattingIndent : int

이 속성은 자동 서식이 활성화된 경우 들여쓰기에 사용되는 공백 또는 탭의 수를 저장합니다. 양수는 공백, 음수는 탭을 나타냅니다.

기본 들여쓰기는 4입니다.

기능에 액세스합니다:

int autoFormattingIndent() const
void setAutoFormattingIndent(int spacesOrTabs)

autoFormatting참조하세요 .

멤버 함수 문서

QXmlStreamWriter::QXmlStreamWriter()

스트림 작성기를 구축합니다.

setDevice()도 참조하세요 .

[explicit] QXmlStreamWriter::QXmlStreamWriter(QByteArray *array)

array 에 기록하는 스트림 작성기를 만듭니다. 이는 QBuffer 장치에서 작동하고 array 에서 작동하는 xml 작성기를 만드는 것과 동일합니다.

[explicit] QXmlStreamWriter::QXmlStreamWriter(QIODevice *device)

device 에 기록하는 스트림 작성기를 구축합니다;

[explicit] QXmlStreamWriter::QXmlStreamWriter(QString *string)

string 에 기록하는 스트림 작성기를 구축합니다.

[noexcept] QXmlStreamWriter::~QXmlStreamWriter()

파괴자.

bool QXmlStreamWriter::autoFormatting() const

자동 서식이 활성화된 경우 true 를 반환하고, 그렇지 않으면 false 을 반환합니다.

참고: 속성 자동 포맷을 위한 게터 함수입니다.

setAutoFormatting()도 참조하세요 .

QIODevice *QXmlStreamWriter::device() const

QXmlStreamWriter 에 연결된 현재 장치를 반환하거나 장치가 할당되지 않은 경우 nullptr 을 반환합니다.

setDevice()도 참조하세요 .

bool QXmlStreamWriter::hasError() const

쓰기에 실패하면 true 을 반환합니다.

스트림이 기본 장치에 쓰지 못했거나 기록할 데이터에 잘못된 문자가 포함된 경우 발생할 수 있습니다.

오류 상태는 재설정되지 않습니다. 오류 조건이 지워지더라도 오류가 발생한 이후에 발생한 쓰기는 무시될 수 있습니다.

void QXmlStreamWriter::setAutoFormatting(bool enable)

enabletrue 인 경우 자동 서식을 활성화하고 그렇지 않으면 비활성화합니다.

기본값은 false 입니다.

참고: 속성에 대한 설정자 함수 autoFormatting.

autoFormatting()도 참조하세요 .

void QXmlStreamWriter::setDevice(QIODevice *device)

현재 디바이스를 device 로 설정합니다. 스트림을 QByteArray 에 쓰도록 하려면 QBuffer 디바이스를 만들면 됩니다.

device()도 참조하세요 .

void QXmlStreamWriter::writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value)

지정된 namespaceUri 에 접두사가 붙은 namevalue 으로 어트리뷰트를 작성합니다. 네임스페이스가 아직 선언되지 않은 경우 QXmlStreamWriter 은 네임스페이스 선언을 생성합니다.

이 함수는 콘텐츠가 작성되기 전 writeStartElement() 또는 writeEmptyElement() 뒤에만 호출할 수 있습니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeAttribute(const QXmlStreamAttribute &attribute)

이것은 과부하된 함수입니다.

attribute 을 씁니다.

이 함수는 콘텐츠가 작성되기 전 writeStartElement() 뒤 또는 writeEmptyElement() 뒤에만 호출할 수 있습니다.

void QXmlStreamWriter::writeAttribute(QAnyStringView qualifiedName, QAnyStringView value)

이것은 오버로드된 함수입니다.

qualifiedNamevalue 으로 속성을 씁니다.

이 함수는 콘텐츠가 작성되기 전 writeStartElement() 또는 writeEmptyElement() 뒤에만 호출할 수 있습니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeAttributes(const QXmlStreamAttributes &attributes)

속성 벡터를 작성합니다 attributes. 어트리뷰트에서 참조하는 네임스페이스가 아직 선언되지 않은 경우 QXmlStreamWriter 은 해당 네임스페이스 선언을 생성합니다.

이 함수는 콘텐츠가 작성되기 전 writeStartElement() 또는 writeEmptyElement() 뒤에만 호출할 수 있습니다.

writeAttribute() 및 writeNamespace()도 참조하세요 .

void QXmlStreamWriter::writeCDATA(QAnyStringView text)

text 을 CDATA 섹션으로 씁니다. text 에 금지된 문자 시퀀스 "]]>"가 포함되어 있으면 다른 CDATA 섹션으로 분할됩니다.

이 함수는 주로 완전성을 위해 존재합니다. 일반적으로 writeCharacters()는 콘텐츠가 아닌 모든 문자를 자동으로 이스케이프 처리하므로 이 함수를 사용할 필요가 없습니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 사용했습니다.

void QXmlStreamWriter::writeCharacters(QAnyStringView text)

text 을 씁니다. 문자 "<", "&" 및 """는 엔티티 참조 "&lt;", "&amp; 및 "&quot;"로 이스케이프됩니다. 금지된 시퀀스 "]]>"를 피하기 위해 ">"도 "&gt;"로 이스케이프 처리됩니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 사용했습니다.

writeEntityReference()도 참조하세요 .

void QXmlStreamWriter::writeComment(QAnyStringView text)

text 을 XML 댓글로 작성합니다. 여기서 text 은 금지된 시퀀스 -- 를 포함하거나 - 로 끝나지 않아야 합니다. XML은 주석에서 - 을 이스케이프하는 방법을 제공하지 않습니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeCurrentToken(const QXmlStreamReader &reader)

reader 의 현재 상태를 씁니다. 가능한 모든 유효한 상태가 지원됩니다.

이 함수의 목적은 XML 데이터의 연쇄 처리를 지원하는 것입니다.

QXmlStreamReader::tokenType()도 참조하세요 .

void QXmlStreamWriter::writeDTD(QAnyStringView dtd)

DTD 섹션을 작성합니다. dtd 은 XML 1.0 사양의 전체 doctypedecl 생성을 나타냅니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeDefaultNamespace(QAnyStringView namespaceUri)

namespaceUri 에 대한 기본 네임스페이스 선언을 작성합니다.

writeStartElement() 또는 writeEmptyElement()이 호출된 경우 선언은 현재 요소에 적용되고, 그렇지 않으면 다음 하위 요소에 적용됩니다.

정의상 네임스페이스 http://www.w3.org/XML/1998/namespace ( xmlns에 바인딩됨) 및 http://www.w3.org/2000/xmlns/ ( xml에 바인딩됨)은 기본값으로 선언할 수 없습니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 사용했습니다.

void QXmlStreamWriter::writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name)

지정된 namespaceUri 에 접두사 name 를 붙인 빈 요소를 작성합니다. 네임스페이스가 선언되지 않은 경우 QXmlStreamWriter 은 네임스페이스 선언을 생성합니다. 이후 writeAttribute()를 호출하면 이 요소에 속성이 추가됩니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 취했습니다.

writeNamespace()도 참조하세요 .

void QXmlStreamWriter::writeEmptyElement(QAnyStringView qualifiedName)

이것은 오버로드된 함수입니다.

정규화된 이름을 가진 빈 요소를 작성합니다 qualifiedName. 이후 writeAttribute()를 호출하면 이 요소에 어트리뷰트가 추가됩니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeEndDocument()

열려 있는 나머지 시작 요소를 모두 닫고 새 줄을 씁니다.

writeStartDocument()도 참조하세요 .

void QXmlStreamWriter::writeEndElement()

이전 시작 요소를 닫습니다.

writeStartElement()도 참조하세요 .

void QXmlStreamWriter::writeEntityReference(QAnyStringView name)

엔티티 참조 name 를 스트림에 "&name;"로 씁니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {})

prefix 으로 namespaceUri 에 대한 네임스페이스 선언을 작성합니다. prefix 이 비어 있으면 QXmlStreamWriter 은 문자 'n' 뒤에 숫자로 구성된 고유 접두사를 할당합니다.

writeStartElement() 또는 writeEmptyElement()이 호출된 경우 선언은 현재 요소에 적용되고, 그렇지 않으면 다음 하위 요소에 적용됩니다.

접두사 xml은 미리 정의되어 있고 http://www.w3.org/XML/1998/namespace 용으로 예약되어 있으며 다른 접두사에 바인딩할 수 없습니다. 접두사 xmlns와 해당 URI http://www.w3.org/2000/xmlns/ 는 네임스페이스 메커니즘 자체에 사용되므로 선언에서 완전히 금지됩니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 사용했습니다.

void QXmlStreamWriter::writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {})

targetdata 으로 XML 처리 명령을 작성합니다. 여기서 data 에는 "?>" 시퀀스가 포함되어서는 안 됩니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

void QXmlStreamWriter::writeStartDocument(QAnyStringView version)

XML 버전 번호로 시작하는 문서를 작성합니다 version.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 사용했습니다.

writeEndDocument()도 참조하십시오 .

void QXmlStreamWriter::writeStartDocument(QAnyStringView version, bool standalone)

XML 버전 번호 version 와 독립형 어트리뷰트 standalone 로 시작하는 문서를 작성합니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

writeEndDocument()도 참조하십시오 .

void QXmlStreamWriter::writeStartDocument()

이 함수는 오버로드된 함수입니다.

XML 버전 번호 "1.0"으로 시작하는 문서를 씁니다.

writeEndDocument()도 참조하세요 .

void QXmlStreamWriter::writeStartElement(QAnyStringView namespaceUri, QAnyStringView name)

지정된 namespaceUri 접두사가 붙은 name 으로 시작 요소를 작성합니다. 네임스페이스가 아직 선언되지 않은 경우 QXmlStreamWriter 은 네임스페이스 선언을 생성합니다. 이후 writeAttribute()를 호출하면 이 요소에 속성이 추가됩니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 취했습니다.

writeNamespace(), writeEndElement() 및 writeEmptyElement()도 참조하세요 .

void QXmlStreamWriter::writeStartElement(QAnyStringView qualifiedName)

이것은 과부하된 함수입니다.

qualifiedName 로 시작 요소를 작성합니다. 이후 writeAttribute()를 호출하면 이 요소에 속성이 추가됩니다.

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

writeEndElement() 및 writeEmptyElement()도 참조하세요 .

void QXmlStreamWriter::writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text)

지정된 namespaceUritext 에 접두사 name 가 붙은 텍스트 요소를 작성합니다. 네임스페이스가 선언되지 않은 경우 QXmlStreamWriter 에서 해당 네임스페이스 선언을 생성합니다.

이는 다음과 같은 편의 기능입니다:

        writeStartElement(namespaceUri, name);
        writeCharacters(text);
        writeEndElement();

참고: 6.5 이전 Qt 버전에서는 이 함수가 QAnyStringView 이 아닌 QString 을 사용했습니다.

void QXmlStreamWriter::writeTextElement(QAnyStringView qualifiedName, QAnyStringView text)

이것은 과부하된 함수입니다.

qualifiedNametext 로 텍스트 요소를 씁니다.

에 해당하는 편의 함수입니다:

        writeStartElement(qualifiedName);
        writeCharacters(text);
        writeEndElement();

참고: 6.5 이전 Qt 버전에서 이 함수는 QAnyStringView 이 아닌 QString 을 취했습니다.

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