Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передача параметров в XML виде


Олег Лаукарт ©   (2002-04-02 14:02:00) 

Задача: Corba-сервер должен принимать запросы с разным числом и типами параметров. Как альтернатива предоставлению на каждый тип запроса отдельного метода очень заманчиво выглядит использование XML. Т.е. формируем запрос к серверу в виде XML, у сервера есть метод wstring Execute(in wstring RequestAsXml) который принимает запрос, расшифровывает, выполняет и возвращает результат тоже в XML формате.
Клиент "хочет" иметь доступ к полученному ответ как к TDataSet.

Вопрос: как это сделать на Делфи, т.е. какие компоненты использовать, где можно посмотреть примеры и пояснения. После прочтения хелпа как всегда больше вопросов чем ответов. Особенно интересует такой момент: все должно выполняться в памяти, до тех пор, пока не будет нужно обратное, т.е. нужно обойтись без сбрасывания XML, и всего что с ним связанно, в файл. Есть ли у кого примеры.


Gini   (2003-01-14 16:10:00) [1]

Я начинающий программист Ж;-) у меня есть задача написать программу в дельфе, с возможностью печати данных из базы данных в файл формата xml. Просьба подсказать, как это можно реализовать или киньте ссылочку, где это можно найти.


Сергей Орлик   (2002-04-22 20:28:00) [2]

Здравствуйте, Коллеги!

небольшой отчет с архитектурой и скринами демонстрации на Java Technology Conference выложен на http://www.borland.ru/events/javatechconf/index.html

С уважением,
Сергей Орлик


Олег Лаукарт   (2002-04-17 10:33:00) [3]

Уважаемый Сергей,
действительно, к сожадению не все могут присутствовать на семинаре - расстояния ограничивают возможности :). Если это будет возможно - выложите хотябы частично указанные вами материалы (в том объеме к которому не будет авторских претензий).


Nikols   (2002-04-17 08:35:00) [4]

Жаль, что у меня не получится присутствовать... буду благодарен тому, кто сможет рассказать, что там было. :)


Сергей Орлик   (2002-04-16 18:59:00) [5]

Здравствуйте, Коллеги!

Я буду завтра (17-го) на Java Technology Conference показывать большую дему (надеюсь мой ноутбук выдержит :-), в которой есть D6 клиенты, принимающие XML-документ как строку и трансформирующие его в MIDAS XML DataPacket:

1.
D6:WebServices-client -> Borland Enterprise Server: Java WebService-server (интегрированный Apache Axis) / одновременно являющийся CORBA клиентом к EJB -> EJB

2.
D6: CORBA-client -> BES: EJB

и там и там использую компоненты для работы с XML (включая ClientDataSet ;). Основная загвоздка в том, какая реально кодировка сидит в XML и кто является сервером (Java, C++, D ...).
Это накладывает определенный отпечаток на маршаллинг.

Выложить проект целиком в Web не смогу (легальные соображения - проект делался с участием гуру's по разным технологиям: Андрея Аристархова, Андрея Никанорова, Александра Цимбала и Алексея Федорова).

если кого заинтересует - готов буду там же на конференции (в кулуарах ;) обратить внимание на важные фрагменты кода.

С уважением,
Сергей Орлик


Олег Лаукарт   (2002-04-10 14:30:00) [6]

Если корба-объект использует стандартные компоненты по работе с XML, то есть проблемы. смотри:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1018423056&n=8


Nikols   (2002-04-02 19:37:00) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
Node, Node1: IXMLNode;
begin
XMLDocument1.Active := True;
Node := XMLDocument1.AddChild('TAG1');
Node.Text := 'Sample text';
Node1 := Node.AddChild('TAG2');
Node1.Text := 'Sample text1';
Node1.SetAttributeNS('AtrName', '', 'Value');
ShowMessage(XMLDocument1.XML.Text);
end;


Олег Лаукарт   (2002-04-02 18:33:00) [8]

Спасибо за ссылку на пример.
Как сформировать XML ручками, не из Query?  Что можно сказать про ТXMLDocument?


Nikols   (2002-04-02 15:40:00) [9]

А ыот и обратное преобразование... То, что было в прошлом примере сохранил в файл.

procedure TForm1.Button1Click(Sender: TObject);
var
 rtn: String;
 str: TStringStream;
 List: TStringList;
begin
 List := TStringList.Create;
 List.LoadFromFile('c:\samplexml.txt');
 rtn := List.Text;
 List.Free;
 str := TStringStream.Create(rtn);
 try
   ClientDataSet1.Close;
   ClientDataSet1.LoadFromStream(str);
   ClientDataSet1.Open;
 finally
   str.Free;
 end;
end;

Пример - MidasXML в Demos\Corba\idl2pas\


Nikols   (2002-04-02 15:32:00) [10]

Преобразование данных (результата выборки)  в XML:

Форма:

object Form1: TForm1
 Left = 192
 ...
object Button1: TButton
   ...
   OnClick = Button1Click
 end
 object Query1: TQuery
   ...
   DatabaseName = 'BCDEMOS'
   SQL.Strings = (
     'select*from customer')
 end
 object DataSetProvider1: TDataSetProvider
   DataSet = Query1
   Constraints = True
   Left = 40
   Top = 8
 end
end

Обработчик нажатия на кнопку, показывающий XML:

uses DSIntf;

procedure TForm1.Button1Click(Sender: TObject);
var
 RecsOut: Integer;
 Options: TGetRecordOptions;
 ByteArray: OleVariant;
 Stroka: String;
begin
Options := [grMetaData,grXML,grReset];
Query1.Active := True;
ByteArray:=DataSetProvider1.GetRecords(-1, RecsOut, Byte(Options));
Stroka:=VariantArrayToString(ByteArray);
Query1.Active := False;
ShowMessage(Stroka);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо