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

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

Как применить XML в работе приложения [D5, XP]


Страницы:   1 2

Виталий Гаврилов ©   (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 делал, если мне память не изменяет. Или это не по моей программе?


Страницы:   1 2

Наверх

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