XML 스트리밍
Qt는 간단한 스트리밍 API를 통해 XML을 읽고 쓰기 위한 두 가지 클래스를 제공합니다: QXmlStreamReader 와 QXmlStreamWriter. 이 클래스들은 QtCore의 일부인 Qt Serialization에 있습니다.
스트림 리더는 XML 문서를 토큰 스트림으로 보고합니다. 이는 SAX 애플리케이션이 파서에서 XML 이벤트를 수신하는 핸들러를 제공하는 반면 QXmlStreamReader 는 루프를 구동하여 필요할 때 리더에서 토큰을 가져온다는 점에서 SAX와 다릅니다. 이러한 풀링 접근 방식을 사용하면 재귀적 하강 파서를 구축할 수 있으므로 XML 파싱 코드를 여러 메서드나 클래스로 분할할 수 있습니다.
QXmlStreamReader 는 외부 파싱된 엔티티를 제외하는 잘 구성된 XML 1.0 파서입니다. 따라서 스트림 리더가 제공하는 데이터는 오류가 발생하지 않는 한 W3C의 올바른 형식의 XML에 대한 기준을 준수합니다. 그렇지 않으면 atEnd(), error() 및 hasError()와 같은 함수를 사용하여 오류를 확인하고 볼 수 있습니다.
QXmlStreamReader 을 사용하는 구현의 예로는 QXmlStreamReader 을 래핑하는 QXmlStream 북마크 예제의 XbelReader가 있습니다. QXmlStreamReader 클래스를 사용하는 방법에 대해 자세히 알아보려면 구현을 읽어보세요.
QXmlStreamReader 와 짝을 이루는 QXmlStreamWriter 클래스는 XML 작성기에 간단한 스트리밍 API를 제공합니다. QXmlStreamWriter 는 QIODevice 에서 작동하며 writeDTD(), writeCharacters(), writeComment() 등과 같이 작성하려는 모든 XML 토큰 또는 이벤트에 대한 특수 함수를 가지고 있습니다.
QXmlStreamWriter 로 XML 문서를 작성하려면 writeStartDocument() 함수로 문서를 시작하고 writeEndDocument()로 끝내면 나머지 열려 있는 모든 태그가 암시적으로 닫힙니다. 요소 태그는 writeStartDocument()로 열고 그 뒤에 writeAttribute() 또는 writeAttributes(), 요소 콘텐츠, writeEndDocument()로 끝납니다. 또한 writeEmptyElement()를 사용하여 빈 요소를 작성할 수도 있습니다.
요소 콘텐츠는 문자, 엔티티 참조 또는 중첩된 요소로 구성됩니다. 콘텐츠는 금지된 모든 문자와 문자 시퀀스를 이스케이프 처리하는 함수인 writeCharacters(), writeEntityReference() 또는 writeStartElement() 후속 호출을 사용하여 작성할 수 있습니다.
QXmlStream 북마크 예제의 XbelWriter 클래스는 QXmlStreamWriter 를 래핑합니다. QXmlStreamWriter 클래스를 사용하는 방법을 보려면 구현을 참조하세요.
© 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.