Работа с xml. С чего начать и куда двигаться?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Работа с xml. С чего начать и куда двигаться?

Сообщение tria » 11.09.2008 14:30:42

Задача: формирование отчетности в налоговую в электронном виде. По шагам:
1. Разбор схемы (*.xsd) или *.xml (может понадобится и то, и другое) для получения списка полей к заполнению.
2. Создание *.xml файла согдасно схемы и настройки заполнения полей.

xml-лем раньше не занимался.

Начал с прочтения статьи "Чтение XML-файлов с помощью Document Object Model (DOM)." с этого сайта и сразу же наткнулся на то, что XMLRead работает только с кодировкой UTF-8. В моем случае, кодировка 1251, да и мало ли какая еще может понадобится...

Подскажите пож, в каком направлении двигаться? Чего почитать, где посмотреть?
Сейчас сел изучать пример StreamAsXMLDemo, но в коде там написано:
unit Laz_DOM;
{
BEWARE !!!
This is a TEMPORARY file.
As soon as it is moved to the fcl, it will be removed.
}

чего ожидать и куда двигаться, чтобы потом не пришлось переделывать?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Padre_Mortius » 11.09.2008 14:38:50

Я поднимал как-то тему по поводу работы с xml-файлами как с деревом, там же лежит ссылка на компонент который портировал
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение shade » 11.09.2008 15:15:12

Иногда играюсь с libxml2, в основном через SAX, через DOM не пробовал.
http://svn.shamangrad.net/mxlib/trunk/xml/libxml2.pas
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение tria » 11.09.2008 15:37:40

Padre_Mortius писал(а):Я поднимал как-то тему по поводу работы с xml-файлами как с деревом, там же лежит ссылка на компонент который портировал


Ссылка на исходники уже битая:
Такого файла не существует или он был удален из-за нарушения авторских прав.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Padre_Mortius » 11.09.2008 16:52:13

могу на почту отправить или http://depositfiles.com/ru/rmv/1376557974369864
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Сергей Смирнов » 11.09.2008 18:13:59

tria писал(а):Начал с прочтения статьи "Чтение XML-файлов с помощью Document Object Model (DOM)." с этого сайта и сразу же наткнулся на то, что XMLRead работает только с кодировкой UTF-8. В моем случае, кодировка 1251, да и мало ли какая еще может понадобится...
В принципе, можно засосать файл в поток, сконвертить его в UTF8 и передать в парсер (там есть XMLRead для чтения из потока) без строки заголовка. Аналогично и в обратную сторону. Я только не знаю, как там обстоят дела с анализом схемы. Может быть ещё и не реализовано.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение v-t-l » 11.09.2008 18:25:10

tria писал(а):XMLRead работает только с кодировкой UTF-8. В моем случае, кодировка 1251, да и мало ли какая еще может понадобится...

По-моему, перекодировать не проблема.

Добавлено спустя 15 минут 49 секунд:
Код: Выделить всё
var
  f: TFileStream;
  st: TStringStream;
  s: String;
begin
  f := TFileStream.Create('c:\data.xml', fmOpenRead);
  st := TStringStream.Create('');
  st.CopyFrom(f, f.Size);
  f.Free;
  s := st.DataString;
  st.Free;
  s := AnsiToUTF8(s);   //  s := SysToUTF8(s);
  st := TStringStream.Create(s);

  ReadXMLFile(doc, st);
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение shade » 11.09.2008 19:13:23

v-t-l писал(а):По-моему, перекодировать не проблема.

ага, но если в самом XML-файле явно указана кодировка (что вроде как требуется по формату, если кодировка не UTF), то он по идее должен либо кракозябры дать, либо вообще поругаться на символы отсутвтующие в ожидаемом charset... в зависимости от ситуации. Если на то пошло, то видимо прийдется анализировать загловок и менять в нем кодировку...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Padre_Mortius » 12.09.2008 08:07:48

просто сообщит что кодировка не поддерживается)
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение tria » 12.09.2008 10:15:31

Padre_Mortius писал(а):просто сообщит что кодировка не поддерживается)


Именно. Лазил отладчиком - проверяет запись в первой строке xml и если она не utf-8 - то дает сообщение о ошибке.
Идея с перекодированием на лету - это конечно, извращение, но сделать можно :). Хотя я так понимаю, что наверное достаточно будет заменить кодировку в первой строке - английские символы и спец. символы в обоих кодировках одинаковы.

Padre_Mortius писал(а):могу на почту отправить

Если можно pavel собач dt.ck.ua
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Padre_Mortius » 12.09.2008 11:08:41

отправил
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение tria » 12.09.2008 11:24:41

Спасибо, получил.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Sergei I. Gorelkin » 12.09.2008 13:00:28

Поддержка любых кодировок будет уже скоро, сейчас идет допинывание последних багов.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение tria » 12.09.2008 13:38:02

А примерно, сколько вы их еще пинать будете? (допиНывание) :))
Я так понимаю, данная часть отностися к FPC а не к Лазарю, и в 0.9.26 включено не будет?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Работа с xml. С чего начать и куда двигаться?

Сообщение Sergei I. Gorelkin » 12.09.2008 16:36:34

Скорее всего на след. неделе отправлю патч.
Хотя вот сегодня обнаружили еще один баг с невыровненным доступом к памяти на ARM, его бы хорошо тоже до кучи исправить, но я даже не знаю с какой стороны подступиться (на х86 оно не проявляется).
Это часть FCL, к Лазарю не относящаяся.
Почему-то уже три релиза подряд у меня появляется время сделать что-то существенное сразу же после релиза :)
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru