Russian Qt Forum
Декабрь 11, 2017, 10:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: универсальный xmlReader  (Прочитано 668 раз)
nvek
Самовар
**
Offline Offline

Сообщений: 147



Просмотр профиля
« : Октябрь 10, 2017, 05:44 »

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

Сообщений: 3841



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

возник вопрос, касательно чтения xml
можно ли при чтении определить вначале это win1251 или utf-8 а потом уже установить setCodec и прочитать xml?
В начале документа, как правило есть секция с тегом ?xml, у нее есть атрибут encoding, с указанием кодировки:
<?xml version="1.0" encoding="UTF-8"?>
 
QXmlDocument сам использует это значение при парсинге документа.
Записан
nvek
Самовар
**
Offline Offline

Сообщений: 147



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

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

Сообщений: 3841



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

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

Сообщений: 508


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


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

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

Qt 5.9.1 Qt Creator 4.4.1
Win7, Win10, Ubuntu 14.04
MrDron
Новичок

Offline Offline

Сообщений: 19


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

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

Сообщений: 508


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


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

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

Qt 5.9.1 Qt Creator 4.4.1
Win7, Win10, Ubuntu 14.04
nvek
Самовар
**
Offline Offline

Сообщений: 147



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

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

Сообщений: 2003


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

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

https://doc.qt.io/qt-5/qxmlstreamreader.html#documentEncoding
Записан
sergek
Программист
*****
Offline Offline

Сообщений: 508


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


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

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

Qt 5.9.1 Qt Creator 4.4.1
Win7, Win10, Ubuntu 14.04
nvek
Самовар
**
Offline Offline

Сообщений: 147



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

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

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