Работа с XML как с деревом

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

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

Работа с XML как с деревом

Сообщение Padre_Mortius » 02.02.2008 20:18:36

Понадобилась возможность работы с XML как с деревом. Если кому пригодиться. то собственно ссылка на сабж http://depositfiles.com/ru/rmv/1376557974369864

Данный невизуальный компонент был портирован из JVCL с некоторыми дополнениями и изменениями. Был проверен на кодировке Win1251.
Последний раз редактировалось Padre_Mortius 11.09.2008 16:56:59, всего редактировалось 1 раз.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Attid » 02.02.2008 20:54:40

ev перекачаешь на сервер ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Sergei I. Gorelkin » 02.02.2008 21:14:26

А чем, если не секрет, родной модуль DOM не подошел?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Padre_Mortius » 03.02.2008 13:38:40

Нужна была поддержка Unicode. Не было возможности разобраться с компонентом DOM на предмет дописания нужных кодировок.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение ev » 03.02.2008 15:58:41

ev
долгожитель
 
Сообщения: 1772
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Padre_Mortius » 03.02.2008 16:55:55

Если будут нужны примеры использования данного компонента, то чуть позже выложу и их
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение ViTality » 04.02.2008 17:48:53

чет я непонял, то
Нужна была поддержка Unicode.

(в DOm все через widecharы делаеться)
но
Был проверен на кодировке Win1251.
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Padre_Mortius » 04.02.2008 19:18:41

ViTality

Чтобы не быть голословным, попробуйте для начала открыть файл у которого прописана кодировка win1251.
Код: Выделить всё
<?xml version="1.0" encoding="windows-1251"?>


В версии fpc 2.2.0 у меня это не получилось. Наблюдал сообщение о том, что данная кодировка не поддерживается. Если у вас все работает. то я рад за вас

До уникода я еще не добрался. сейчас времени нет на проверку
Последний раз редактировалось Padre_Mortius 04.02.2008 19:28:55, всего редактировалось 1 раз.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius » 04.02.2008 19:21:33

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

Сообщение Sergei I. Gorelkin » 04.02.2008 20:48:38

Да, пока что там поддерживаются только utf-8, utf-16 и iso8859-1.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение ViTality » 05.02.2008 13:44:07

Тебя спросили чем не катит DOM
ты ответил что потомучто нужел был юникод, хотя в DOM все на widechar`ах

а переписаный тобой модуль ориентирован на работу с 1251

короче я прост запутался и решил уточнить :)

Вопрос: а Работа с XML как с деревом это всмысле:
я знаю имена нодов
и обращаюсь к ним в виде:

А:=документ\нод1\нод2\нод3.Значение
Б:=документ\нод1\нод2\нод4.Значение

чтото в этом роде???
п.с. модуль еще не смотрел
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Padre_Mortius » 05.02.2008 14:20:19

Да именно.

Код: Выделить всё
var
  XmlDoc: TjvXmlTree;
  Node: TjvXmlNode; 
  Node1Value: AnsiString;
begin
  try
    XmlDoc := TjvXmlTree.Create('','', nil);
    XmlDoc.LoadFromFile(aFileName);
    Node := XmlDoc.FindNamedNode('nodeFirst');   
    Node1Value:=Node.GetNamePathNode('nodeFirst/nodeSecond').Value;
  finally
    XmlDoc.Free;
  end;
end;


Но мне больше нравится обращаться с узлами немного по другому
Код: Выделить всё
var
  XmlDoc: TjvXmlTree;
  S: AnsiString;
begin
  try
    XmlDoc := TjvXmlTree.Create('','',nil);
    XmlDoc.LoadFromFile(FileName);
    S := XmlDoc.FindNamedNode('sen:Object').Value;
    if Length(S) <> 0 then UnBase64(S, FileName);
  finally
    FreeAndNil(XmlDoc);
  end;
end;
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru