Russian Qt Forum
Ноябрь 23, 2024, 22:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: универсальный xmlReader  (Прочитано 6721 раз)
nvek
Гость
« : Октябрь 10, 2017, 05:44 »

возник вопрос, касательно чтения xml
можно ли при чтении определить вначале это win1251 или utf-8 а потом уже установить setCodec и прочитать xml?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Октябрь 10, 2017, 06:41 »

возник вопрос, касательно чтения xml
можно ли при чтении определить вначале это win1251 или utf-8 а потом уже установить setCodec и прочитать xml?
В начале документа, как правило есть секция с тегом ?xml, у нее есть атрибут encoding, с указанием кодировки:
<?xml version="1.0" encoding="UTF-8"?>
 
QXmlDocument сам использует это значение при парсинге документа.
Записан
nvek
Гость
« Ответ #2 : Октябрь 10, 2017, 07:55 »

да. но суть в том чтобы узнать этот атрибут.
Есть два документа. структура одинаковая, но у одного виндовозовская кодировка, а у другого- utf-8.
Как прочитать их одинаково?
« Последнее редактирование: Октябрь 10, 2017, 08:02 от nvek » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Октябрь 10, 2017, 09:15 »

да. но суть в том чтобы узнать этот атрибут.
Есть два документа. структура одинаковая, но у одного виндовозовская кодировка, а у другого- utf-8.
Как прочитать их одинаково?
Отдать их QXmlDocument, он все сделает сам.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Октябрь 10, 2017, 10:04 »

Отдать их QXmlDocument, он все сделает сам.
Что за класс?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
MrDron
Гость
« Ответ #5 : Октябрь 10, 2017, 10:27 »

Что за класс?
Видимо он подразумевает QDomDocument. Но если xml большая, то использовать DOM накладно.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Октябрь 10, 2017, 11:08 »

возник вопрос, касательно чтения xml
А какой парсер вы имеете в виду? Если SAX, то могу дать ссылку на пример. Хотя, если речь только о чтении - то, как вам уже сообщили, парсеру не нужны никакие дополнительные действия, кроме атрибута encoding в заголовке документа.
А вот при записи документа может потребоваться установка кодировки, если она отлична от UTF-8.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
nvek
Гость
« Ответ #7 : Октябрь 23, 2017, 10:08 »

так вот, как найти encoding с помощью QXmlStreamReader и зависимости от параметра прочитать подругому??
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Октябрь 23, 2017, 10:58 »

так вот, как найти encoding с помощью QXmlStreamReader и зависимости от параметра прочитать подругому??

https://doc.qt.io/qt-5/qxmlstreamreader.html#documentEncoding
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #9 : Октябрь 23, 2017, 11:09 »

Кодировку определить - не проблема. Она либо есть (в декларации), либо не указана, что подразумевает UTF-8. А задать кодировку при чтении, по-моему, не удастся.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
nvek
Гость
« Ответ #10 : Октябрь 26, 2017, 14:14 »

У меня не получается определить кодировку при чтении
QStringRef encoding = xmlReader.documentEncoding();
вернул NULL
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.132 секунд. Запросов: 22.