한국어
Qt
 

Qt로 XML 파싱 : Qt 6에서 업데이트된 (Parsing XML with Qt: Updates for Qt 6)

 

 - Sona Kurazyan 2019년 12월 3일 화요일 게시

 - 원문 : https://www.qt.io/blog/parsing-xml-with-qt-updates-for-qt-6

 - 번역 : https://j2doll.tistory.com/655

 

Qt로 XML 문서를 파싱하는 것과 관련한 마지막 포스트 이후 많은 시간이 흘렀습니다. 저는 다음 릴리스에서 예상되는 변경 사항에 대한 갱신을 하고 싶습니다. 먼저, Qt가 현재 XML 문서를 읽고 쓰는 곳에 제공되는 방법을 요약해 보겠습니다.

 

Qt XML 모듈

 

XML 파일 읽기 및 쓰기를 위한 모듈은 DOM (Document Object Model) 및 SAX (Simple API for XML) 의 두 가지 모델에 대한 구현을 제공합니다.

 

DOM 모델을 사용하면 전체 XML 파일이 메모리에 로드되고, 트리로 표시되므로, 노드에 쉽게 액세스하고 조작할 수 있습니다. DOM은 일반적으로 메모리를 별로 신경 쓰지 않는 응용 프로그램에서 사용됩니다.

 

반면 SAX는 이벤트 기반 XML 파서이며 전체 XML 문서를 메모리에 로드하지 않습니다. 대신 구문 분석하는 동안 토큰에 대한 이벤트를 생성하며, 해당 이벤트를 처리하는 것은 사용자의 책임입니다. 애플리케이션은 핸들러 인터페이스를 구현해야 합니다. (QXmlDefaultHandler를 사용하여 전체 또는 부분적으로) 많은 사람들이 이 모델을 중심으로 코드를 구조화 해야하기 때문에 불편함을 느낍니다.

 

또 다른 문제는 현재 SAX 구현(SAX를 사용하여 구현되므로 DOM)이 XML 표준을 완전히 준수하지 않는다는 것입니다. 이러한 단점을 고려하여, Qt 는 더 이상 SAX 사용을 권장하지 않으며, Qt 5.15부터 해당 클래스를 더 이상 사용하지 않기로 결정했습니다.

 

QXmlStreamReader 및 QXmlStreamWriter

 

운 좋게도 Qt는 XML 파일 작업을 위한 보다 편리한 XML 표준 호환 대안으로 XML Streaming 클래스를 제공합니다. Qt를 사용한 XML 스트리밍에 대한 빠른 소개를 얻으려면 이 블로그(blog.qt.io) 게시물을 확인하십시오.

 

Qt 6의 변경 사항은 무엇입니까?

 

위에서 언급했듯이 SAX 클래스는 더 이상 사용되지 않으므로, QDomDocument는 더 이상 사용할 수 없습니다. 그래서 QXmlStreamReader는 재-구현되었습니다.

 

Qt 6은 새로운 구현으로 전환하지만, 이전 Qt 버전은 여전히 ​​이전 구현 방식을 사용합니다. 새로운 구현은 약간의 동작 변경을 가져 오기 때문에, 우리는 Qt 6 이전에는 이점을 수행하고 싶지 않습니다.

 

 - 속성(attribute) 값이 정규화 됩니다. 예를 들어 <tag attr=" a \n b " /> 는 <tag attr="a b"/>

 - 동일하게 규정된 속성 이름은 더 이상 허용되지 않습니다. 즉, 요소(element)의 속성에는 고유한 이름이 있어야 합니다.

 - 선언되지 않은 네임 스페이스(namespace) 접두사(prefix)는 더 이상 허용되지 않습니다.

 

 QDomDocument 를 사용하고 이들 중 하나에 의존하는 경우 코드와 XML 문서를 적절히 업데이트 하십시오.

 현재 Qt의 XML 기능을 어떻게 사용하고 있는지에 대한 의견을 듣는 것이 좋습니다. 보고 싶은 것이 없습니까? 의견을 알려주십시오!

 

이 글과 연관된 다른 글
  1. [2020/01/31] 2020년에 변경되는 Qt 오퍼 (Qt offering changes 2020) by j2doll (91) *2
  2. [2019/12/12] Qt 5.14 릴리즈 by makersweb (109)
  3. [2019/08/20] [Qt News] Qt for Python을 위한 기술 비전 by j2doll (513)
  4. [2019/08/08] [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) by j2doll (410, 1) *2
  5. [2019/08/02] [Qt News] Qt6 Git 개발 초기 단계 시작하기 by j2doll (619)
번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 7739
109 QLabel의 텍스트 색과 배경색을 변경 makersweb 2020.02.25 5
108 라즈베리파이4에 대한 Qt 5.14.1 크로스컴파일 file makersweb 2020.02.12 71
107 QOpenGLWidget 을 투명하게 적용 file makersweb 2020.02.05 35
106 2020년에 변경되는 Qt 오퍼 (Qt offering changes 2020) [2] j2doll 2020.01.31 91
» Qt로 XML 파싱 : Qt 6에서 업데이트된 (Parsing XML with Qt: Updates for Qt 6) [1] j2doll 2020.01.16 95
104 Qt 멀티 스레드 프로그래밍 시 유의해야 할 몇 가지 makersweb 2020.01.13 142
103 ApplicationWindow 와 메뉴바(MenuBar)구성 file makersweb 2020.01.04 95
102 QThread 소개 및 예제 makersweb 2019.12.25 366
101 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 342
100 Qt for MCU 1.0 릴리즈 makersweb 2019.12.10 127
99 Qt Marketplace 발표 makersweb 2019.12.02 277
98 QScopedPointer 소개 및 사용법 makersweb 2019.11.29 90
97 QOpenVirtualkeyboard(Qt 5용 한글 및 영문, 숫자 가상키보드) file makersweb 2019.11.27 277
96 Qt3D의 QML 타입으로 3D렌더링 file makersweb 2019.11.20 221
95 라즈베리파이3에서 Boot to Qt 실행해보기 makersweb 2019.11.13 255
94 Qt애플리케이션 객체(QCoreApplication, QGuiApplication, QApplication) 에 대해서 makersweb 2019.11.11 645
93 Qt Quick 3D 소개 makersweb 2019.11.09 130
92 QPushButton 의 커스텀 이미지버튼 file makersweb 2019.11.05 263
91 qbs 사용 방법(Helloworld) file makersweb 2019.10.23 259
90 웹기반 Qt Design Viewer [2] file makersweb 2019.10.23 178