![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передача параметров в 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;