Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nvek от Октябрь 10, 2017, 05:44



Название: универсальный xmlReader
Отправлено: nvek от Октябрь 10, 2017, 05:44
возник вопрос, касательно чтения xml
можно ли при чтении определить вначале это win1251 или utf-8 а потом уже установить setCodec и прочитать xml?


Название: Re: универсальный xmlReader
Отправлено: Old от Октябрь 10, 2017, 06:41
возник вопрос, касательно чтения xml
можно ли при чтении определить вначале это win1251 или utf-8 а потом уже установить setCodec и прочитать xml?
В начале документа, как правило есть секция с тегом ?xml, у нее есть атрибут encoding, с указанием кодировки:
<?xml version="1.0" encoding="UTF-8"?>
 
QXmlDocument сам использует это значение при парсинге документа.


Название: Re: универсальный xmlReader
Отправлено: nvek от Октябрь 10, 2017, 07:55
да. но суть в том чтобы узнать этот атрибут.
Есть два документа. структура одинаковая, но у одного виндовозовская кодировка, а у другого- utf-8.
Как прочитать их одинаково?


Название: Re: универсальный xmlReader
Отправлено: Old от Октябрь 10, 2017, 09:15
да. но суть в том чтобы узнать этот атрибут.
Есть два документа. структура одинаковая, но у одного виндовозовская кодировка, а у другого- utf-8.
Как прочитать их одинаково?
Отдать их QXmlDocument, он все сделает сам.


Название: Re: универсальный xmlReader
Отправлено: sergek от Октябрь 10, 2017, 10:04
Отдать их QXmlDocument, он все сделает сам.
Что за класс?


Название: Re: универсальный xmlReader
Отправлено: MrDron от Октябрь 10, 2017, 10:27
Что за класс?
Видимо он подразумевает QDomDocument. Но если xml большая, то использовать DOM накладно.


Название: Re: универсальный xmlReader
Отправлено: sergek от Октябрь 10, 2017, 11:08
возник вопрос, касательно чтения xml
А какой парсер вы имеете в виду? Если SAX, то могу дать ссылку на пример. Хотя, если речь только о чтении - то, как вам уже сообщили, парсеру не нужны никакие дополнительные действия, кроме атрибута encoding в заголовке документа.
А вот при записи документа может потребоваться установка кодировки, если она отлична от UTF-8.


Название: Re: универсальный xmlReader
Отправлено: nvek от Октябрь 23, 2017, 10:08
так вот, как найти encoding с помощью QXmlStreamReader и зависимости от параметра прочитать подругому??


Название: Re: универсальный xmlReader
Отправлено: Alex Custov от Октябрь 23, 2017, 10:58
так вот, как найти encoding с помощью QXmlStreamReader и зависимости от параметра прочитать подругому??

https://doc.qt.io/qt-5/qxmlstreamreader.html#documentEncoding


Название: Re: универсальный xmlReader
Отправлено: sergek от Октябрь 23, 2017, 11:09
Кодировку определить - не проблема. Она либо есть (в декларации), либо не указана, что подразумевает UTF-8. А задать кодировку при чтении, по-моему, не удастся.


Название: Re: универсальный xmlReader
Отправлено: nvek от Октябрь 26, 2017, 14:14
У меня не получается определить кодировку при чтении
QStringRef encoding = xmlReader.documentEncoding();
вернул NULL