![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как применить XML в работе приложения [D5, XP]
Виталий Гаврилов © (2006-10-04 18:44:00)Я сознаюсь я впервые сталкиваюсь с применением XML в работе приложения, нов кратце объясню что хочу: Смысл загрузить и сохранить на диске в корне проги XML файл из инета (список) и при нажатии клавиши отразить этот список в отдельном окне (оффлайн). Помогите , в котором направлении двигатся. Спасибо!
Виталий Гаврилов (2006-10-13 14:33:00) [1]Решил парсеры не использовать :( просто отражать в браузере
_RusLAN (2006-10-11 18:20:00) [2]> [30] Виталий Гаврилов © (11.10.06 17:12)
одной строчки кодаmemo1.text:= doc.xml;маловато будет, чтобы распарсить документ :)
разберитесь как работать с XML парсерами:
-как получить список узлов с заданым именем
-как получить доступ к конкретному узлу
-как получить список подузлов
-как получить значение узла
- и т.п.
Для нетребовательных задач я обычно использую парсер SimpleXML, он бесплатный, с исходным кодом и не зависит от внешних компонентов.
Может вам с ним проще будет разобраться чем с майкрософтским.
Виталий Гаврилов (2006-10-11 17:12:00) [3]procedure TForm1.FormCreate(Sender: TObject);
var coDoc: CoDOMDocument;
var Doc: IXMLDOMDocument;
begin
doc:= codoc.create;
doc.load('data.xml');
memo1.text:= doc.xml;
end;
_RusLAN (2006-10-11 15:23:00) [4]> [28] Виталий Гаврилов © (11.10.06 11:23)
> Использовал в Д5 стандарный парсер MSXML, но проблема в
> том, что отображаемтся в мемо потраха XML а не нормальный
> текст. Теперь по каким принципам преобразовать в нормальный
> (читабельный) вид :(
Не правильно, значит, использовали.
Покажите пример вашего XML, как использовали и что получилось.
Виталий Гаврилов (2006-10-11 11:23:00) [5]Использовал в Д5 стандарный парсер MSXML, но проблема в том, что отображаемтся в мемо потраха XML а не нормальный текст. Теперь по каким принципам преобразовать в нормальный (читабельный) вид :(
ProgRAMmer Dimonych (2006-10-08 23:58:00) [6]Это не помогло? См. [10]
OD:TOpenDialog;
procedure TForm1.LoadXMLClick(Sender: TObject);
var
Tmp:TStringList;
i,L:Integer;
CurrLine:ANSIString;
CurrNode:TTreeNode;
begin
if not(OD.Execute) then Exit;
Tmp:=TStringList.Create;
Tmp.LoadFromFile(OD.Files[0]);
CurrNode:=nil;
for i:=0 to Tmp.Count-1 do
begin
CurrLine:=ClearText(Tmp[i]); L:=Length(CurrLine);
if L<>0 then
if not((CurrLine[1]<>'<') or (Copy(CurrLine,1,2)='<?')) then
begin
if Copy(CurrLine,1,2)='</' then
begin
if CurrNode<>nil then CurrNode:=CurrNode.Parent
end
else
if Copy(CurrLine,L-1,2)='/>' then
TV.Items.AddChild(CurrNode,Copy(CurrLine,2,L-3))
else
if Copy(CurrLine,L,1)='>' then
CurrNode:=TV.Items.AddChild(CurrNode,Copy(CurrLine,2,L-2));
end;
end;
CurrNode.Free;
Tmp.Free;
end;
function TForm1.ClearText(Text:ANSIString):ANSIString;
begin
Result:=Text;
if Length(Result)=0 then Exit;
while Ord(Result[1])<=Ord(' ') do
Delete(Result,1,1);
end;
Это по поводу загрузки дерева. Можно чуток подкорректировать под конкретные нужды (небиологические :)). Сеть - сокеты, сокеты и сокеты. А деньги - они на раскрутку софтины могут понадобиться...
Ketmar (2006-10-08 23:51:00) [7]>[25] Виталий Гаврилов(c) 8-Oct-2006, 15:26
>ищу кто сделает, пишите на мыло (сколько, нужно срочно)
благородный дон обалдел. дону надо -- дон пишет. на мыло тем, кому хочет предложить.
зыж мне можно не писать -- денег не хватит.
Виталий Гаврилов (2006-10-08 15:26:00) [8]ищу кто сделает, пишите на мыло (сколько, нужно срочно)
_RusLAN (2006-10-06 19:40:00) [9]> [22] Виталий Гаврилов © (06.10.06 18:42)
Что вам не понятно?
1. Вам надо скачать сначала файл из Интернета
Это обычная задача. Множество примеров вы сможете найти в том же Интернете.
2. Отобразить его:
вариант 1.можно отображать самому. Распарсить с использованием какого-нибуть готового парсера и накодить отображение полученой информации (ну там ввиде дерева, или списка или чего нибуть еще ...)
Вариант 2.спихнуть всю эту работу на Веб-браузер. надо только написать XSL-файл, который будет указывать браузеру как отображать ваш XML-файл. Как это сделать описано в ссылках в моем предыдущем посте (это ИМХО самое доступное и простое описание). Также при использованиии второго варианта можна будет заставить браузер самому загрузить XML-файл из Интеренета. Можно использовать внешний браузер, а можно встроить его в свое приложение(компоненты TWebBrowser или TEmbeddedWB)
Ketmar (2006-10-06 18:46:00) [10]блин, DOM-парзеров в сети -- как собак нерезаных. да и в самой системе идёт, от m$.
перефразирую: сколько заплатят?
Виталий Гаврилов (2006-10-06 18:42:00) [11]Не ужели нет по проще ссылки, ну что никто не делал подобное!? :)
_RusLAN (2006-10-05 19:54:00) [12]> Что это библиотека Дельфи или компанент, работает ли он
> в Дельфи 5?
XML + XSLT(XSL) = HTML
XSL это что-то типа набора правил которые указывают как отображать XML
зайдите на http://xml.nsu.ru/
и прочитайте там про XML и XSL
http://xml.nsu.ru/xml/xml_home.xml
и
http://xml.nsu.ru/xsl/xsl_home.xml
соответственно
Виталий Гаврилов (2006-10-05 18:38:00) [13]
> XSLT
Что это библиотека Дельфи или компанент, работает ли он в Дельфи 5?
_RusLAN (2006-10-05 16:00:00) [14]> Как отразить XML (где забит список организаций с адресами)
> в Memo или в другом элементе. Ценнен любой совет.
предлагаю отображать в TWebBrowser. Внешний вид придавать с помощью XSLT.
Reindeer Moss Eater (2006-10-05 15:28:00) [15]А возможно ли загрузить XML в Fast Reports?
<Цитата>
А возможно ли посмотреть список xml классов, доступных в FR и попробовать сделать вывод самостоятельно?
Виталий Гаврилов (2006-10-05 15:19:00) [16]А возможно ли загрузить XML в Fast Reports?
Виталий Гаврилов (2006-10-05 12:43:00) [17]У меня данное действо как доп. приложение к основной большой программе и возможности перенести все с дельфи 5 на дельфи 7 просто нет. Может есть у кого готовые наработки. Как отразить XML (где забит список организаций с адресами) в Memo или в другом элементе. Ценнен любой совет.
ProgRAMmer Dimonych (2006-10-04 23:53:00) [18]У меня - седьмая. Предлагаю попробовать создать новый проект, сохранить и заменить в нём хотя бы pas-файл, короче поэкспериментировать.
Когда-то стояла пятая, потом за нехваткой места на жёстком диске удалил.
Виталий Гаврилов (2006-10-04 23:02:00) [19]loadXML.Caption:invalid property value
Это выдает сразу, я даже не могу увидеть форму проги. Скажи а в каком Дельфи делал, у меня 5. Может из-за версии дельфи?
ProgRAMmer Dimonych (2006-10-04 22:42:00) [20]На заказ не выполняю (времени в 10-м классе не хватает). А что за LoadXML? Я вроде бы на стандартных TMemoryStream и TTreeView делал, если мне память не изменяет. Или это не по моей программе?