lazarus xml

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

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

lazarus xml

Сообщение Virus191288 » 07.02.2014 08:20:44

Добрый день. Не могу разобраться как в лазарус работать с xml. Была у меня давно программа, которая из StringList сохраняла данные в xml. Хочу переделать ее на лазарусе.
Вот код который использовал в делфи:
Код: Выделить всё
procedure TList.List2XML(ur:string);
var
  XMLDoc : TXMLDocument;
  iNode : IXMLNode;
  i:integer;
  procedure ProcessTreeItem(
        i:integer;
        iNode : IXMLNode);
  var
    cNode : IXMLNode;
  begin
    cNode := iNode.AddChild('item');
    cNode.Attributes['name'] := EncodeText(indexes[i]);
    cNode.Attributes['Items'] := EncodeText(Items[i]);
  end; (*ProcessTreeItem*)
begin
  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.Active := True;
  iNode := XMLDoc.AddChild('Base2xml');
  iNode.Attributes['Base'] := 'MyListBaseXML';
  i:=0;

  while i <> indexes.Count do
  begin
    ProcessTreeItem (i, iNode);

    inc(i);
  end;
  XMLDoc.SaveToFile(ur);
  XMLDoc := nil;
end; (* Tree2XML *)

procedure TList.XML2List(XMLDoc: TXMLDocument; ur:string);
var
  iNode : IXMLNode;
  i:integer;
  procedure ProcessNode(
        Node : IXMLNode);
  var
    cNode : IXMLNode;
  begin
    if Node = nil then Exit;
    with Node do
    begin
      indexes.Add(DecodeText(Attributes['name']));
      items.Add(DecodeText(Attributes['Items']));
    end;

  end; (*ProcessNode*)
begin
  i:=0;

  indexes.Clear;
  Items.Clear;

  XMLDoc.FileName := ur;
  XMLDoc.Active := True;
  if XMLDoc = nil then exit;
  iNode := XMLDoc.DocumentElement.ChildNodes.First;

  while iNode <> nil do
  begin
    ProcessNode(iNode);
    inc(i);
    iNode := iNode.NextSibling;
  end;

  XMLDoc.Active := False;
end;           

Кто может помочь с портированием?
Virus191288
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.02.2014 08:15:00

Re: lazarus xml

Сообщение wavebvg » 07.02.2014 09:08:21

Если задачу принципиально хочется решить средствами лазаруса, тогда стоит ознакомиться с соответствующей документацией http://wiki.freepascal.org/XML_Tutorial/ru
Если таких принципов нет, то лучше пользоваться чем-то обратно совместимым и переносимым, к примеру, NativeXML http://www.simdesign.nl/xml.html (можно найти версию и поновее). Или libxml2, что позволит в дальнейшем не ограничивать себя в возможностях (XSLT и прочие вкусности), хотя C подобный стиль богомерзок, поэтому придётся писать обёртки (есть в комплкте с FPC, но иногда лучше все свое носить с собой http://sourceforge.net/projects/libxml2-pas/).

ЗЫ: Портирование чего? Задача какая-то мутная и тривиальная
wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: lazarus xml

Сообщение Virus191288 » 07.02.2014 09:20:28

Не совсем тривиальная. Есть у темя программка, которую я использую для хранения всяких паролей и напоминалок. Работает все довольно просто. Данные шифруются в aes-256 и затем из них собирается XML файл. Все остальное вроде знаю как переделать, а вот с XML возникла проблема. Не совсем понимаю как оно работает(да и в делфи не очень с ними разобрался.) Хочу переделать на лазарусе и потом портнуть на мак. Нужно как-то сделать сохранение и чтение XML, но не могу понять как это сделать. О NativeXML я уже думал, но придется все переделывать.
Virus191288
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.02.2014 08:15:00

Re: lazarus xml

Сообщение wavebvg » 07.02.2014 09:34:17

Задача: есть текст, разделённый переводом строк, содержащие пары текстовых значений, разделенных пробелом
Нужно: зачем-то сохранить это дело в XML
Вопрос: может лучше зашифровать и хранить через разделители?

Мой совет - не париться, подключить NativeXML и реализовать с помощью него - так будет спокойнее, да и там куда как проще работа с нодами
wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: lazarus xml

Сообщение Virus191288 » 07.02.2014 09:58:37

Уже сделал. Спасибо за подсказку на счет NativeXML.
Нужно, потому-что я так хочу :)
Virus191288
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.02.2014 08:15:00


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 235

Рейтинг@Mail.ru