On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 5883
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 14:30. Заголовок: Снова XML


Нужно создавать / читать XML в UTF-16
Что есть в этом плане в Harbour ?

Минимум нужно корректное чтение !

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 61 , стр: 1 2 3 4 All [только новые]


постоянный участник




Пост N: 1085
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 16:08. Заголовок: Давно использую для ..


Давно использую для чтения предложенное от А.Кресина. Пример: Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1086
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 16:13. Заголовок: PS чуть поехало в ко..


PS
чуть поехало в конце
 
k := len(o:aItems)
FOR i := 1 TO k
j := o:aItems[ i ]
ArrOrderHead(j:title, Get_Value(j, 1))
NEXT

Пример xml:Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5884
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 16:30. Заголовок: Ты про эту ? /* * ..


Ты про эту ?
 
/*
* $Id: hxmldoc.prg 2265 2014-06-11 08:54:33Z alkresin $
*
* Harbour XML Library
* HXmlDoc class
*
* Copyright 2003 Alexander S.Kresin <alex@kresin.ru>
* www - http://www.kresin.ru
*/


та что на сайте у него в сырцах HWGUI ?
А что насчет UTF-16 ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1087
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:08. Заголовок: Dima пишет та что на..


Dima пишет
 цитата:
та что на сайте у него в сырцах HWGUI ?
А что насчет UTF-16 ?


Брали оттуда для hb 2.0, так и работаем. Вроде в hb 3.2 похожий, а может и тот же - не смотрел.
С Utf8 просто:
1. если файл xml с BOM, то откусываем BOM
IF left(j, 3) == chr(239)+chr(187)+chr(191); j := subs(j, 4)
ENDIF
3. Получаею значения
 
...
k := len(o:aItems)
FOR i := 1 TO k
j := o:aItems[ i ]
ArrOrderHead(j:title, Get_Value(j, 1))
NEXT
...
FUNCTION Get_Value( o, n, lUtf8 )
LOCAL j

Default lUtf8 := m->lUtf8Set

IF n == NIL; n := 1
ENDIF
j := o:aItems[ n ]
IF valtype(j) == "C"
If lUtf8; j := hb_Utf8ToStr(j)
EndIf
ELSE ; j := ""
ENDIF

RETURN j

Формирую xml как правило так: Скрытый текст

где ^... - типа макроса для получения данных в тэг (<TotalGrossAmount>^OS_6+OS_4</TotalGrossAmount>)
а ^- ( <TotalRounding>^-</TotalRounding> ) - тэг может отсутсвовать или быть пустым


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1088
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:15. Заголовок: PS тексты языковые т..


PS
тексты языковые так
<StreetAndNumber>^gT("StreetR")</StreetAndNumber> - рус. текст
<StreetAndNumber>^gT("StreetL")</StreetAndNumber> - лат. текст
внутри gt(...)
If lUtf8; cTxt := hb_Str2Utf8(cT)
cdp установлена должна быть правильной для работы hb_StrToUtf8, hb_Utf8Str

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1089
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:30. Заголовок: PS 2 для ясности, чи..


PS 2
для ясности, читаю этот шаблон теми же средсвами, подставляю мкросы и вывожу в new.xml
секции xml цикловые
<Line>
<Line-Item>
...
</Line-Item>
...
</Line>
кручу в цикле DO WHILE ! EOF() ... заполняя данными макросов и подавая строки на выход


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5885
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 17:34. Заголовок: Сергей я стопитсотый..


Сергей я в стопитсотый раз спрашиваю а как быть с UTF-16 а ты все молчишь
Или я чего пропустил ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1091
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:46. Заголовок: Dima Мне странно, ч..


Dima
Мне странно, что файл xml в unicode, даже не встречал в реале.
В Dos у нас была утилитка перезаписи unicode -> Lv866
Возми в редактор ( можно notepad.exe, notepad2.exe) и перекодируй в Utf8, возможно где то есть готовые утилитки

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5886
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 17:48. Заголовок: :sm12: Это должен ..



Это должен быть автомат.
Вот чего пишут в протоколе обмена
 
• Структура файла обмена данными
Файл обмена данными представляет собой ZIP-архив, который может быть защищен паролем.
Загружаемый в МУ архив с данными имеет название "From1C.zip" и внутри архива могут находиться следующие файлы:
• XML-файл описания данных "FromCDB.xml". Формат XML-файла описывается в разделах ниже.
При выгрузке данных из МУ формируется архив с названием "To1C.zip" и внутри архива могут находиться следующие файлы:
• XML-файл описания данных "ToCDB.xml". Формат XML-файла описывается в разделах ниже.
• Формат XML-файлов обмена данными
Первая строка XML-файла называется объявлением XML – это строка, указывающая версию XML. Также здесь должна быть указана
кодировка символов.
Файл выгрузки из МУ имеет кодировку "UTF-16", файл загрузки в МУ из ЦБД может иметь кодировки "UTF-8", "UTF-16".
Далее следует корневой тэг DATA. Атрибуты тэга описаны в таблице ниже.



Файл выгрузки идет из проги под Андроид

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1092
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:51. Заголовок: Dima в hb 3.2 есть ..


Dima
в hb 3.2 есть src\codepage\cp_u16le.c
static HB_CDP_GET_FUNC( UTF16LE_get )
...
так что думаю есть и установка cdp для нее, ставь, читай файл и делай hb_StrToUtf8

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1093
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:56. Заголовок: Dima пишетФайл выгру..


Dima пишет
 цитата:
Файл выгрузки идет из проги под Андроид


Ну да с телефона xml я еще не принимал

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3465
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.07.16 17:58. Заголовок: Как вариант: перекод..


Как вариант: перекодировать файл в utf-8, работать с ним, а результат перекодировать в utf-16.
С xml в utf-8 я успешно работаю как раз с помощью библиотеки А.Кресина.
Непосредственно с utf-16 она конечно будет работать некорректно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1094
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 17:58. Заголовок: Dima пишет Первая с..


Dima пишет
 цитата:
Первая строка XML-файла называется объявлением XML – это строка, указывающая версию XML. Также здесь должна быть указана кодировка символов


у меня
<?xml version="1.0" encoding="Utf-8"?>
а у тебя ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5887
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 18:29. Заголовок: SergKis Пример: &#..


SergKis
 
Пример:
<?xml version="1.0" encoding="utf-16"?>
<DATA>
<CONSTANTS>
...
</CONSTANTS>
</DATA>



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1095
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 18:55. Заголовок: Dima тогда по Пашин..


Dima
тогда по Пашиному рецепту
 цитата:
перекодировать файл в utf-8, работать с ним, а результат перекодировать в utf-16.


если принимаешь данные, то достаточно "перекодировать файл в utf-8" и отработать, например как у меня на библиоте А.Кресина
если надо отдавать, то формируешь вых. xml в Utf8 (любым способом) и потом "результат перекодировать в utf-16"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5888
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 21:54. Заголовок: Всем спасибо , нужно..


Всем спасибо , нужно переварить это дело.
Доки на родном языке я так понял нет к библиотеке А.Кресина.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5889
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.16 10:10. Заголовок: Не пойму что ей надо..


Не пойму что ей надо :)
 
#include "hxml.ch"

Proc main
local oXml,oXmlDoc

REQUEST HB_LANG_RU866
HB_LANGSELECT("RU866")

REQUEST HB_CODEPAGE_UTF16LE
REQUEST HB_CODEPAGE_UTF8
REQUEST HB_CODEPAGE_RU866
hb_cdpSelect( "RU866" )



oXml := HXMLDoc():Read( "test.xml" )

oXmlDoc := oXml:find("CONSTANTS")

? empty( oXmlDoc ) // .T.
wait
return nil

Не находит CONSTANTS
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1234
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 16.07.16 10:24. Заголовок: Dima, насколько я по..


Dima, насколько я понимаю, в этом xml нет корневого элемента, обрамляющего все остальные элементы.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5890
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.16 10:34. Заголовок: PSP Тэг DATA корнев..


PSP
Тэг DATA корневой

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1235
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 16.07.16 10:49. Заголовок: Хотя да, не разгляде..


Хотя да, не разглядел)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 61 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 237
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет