Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2010, 08:05   #31
eek_eek
 
Регистрация: 20.04.2010
Сообщений: 8
По умолчанию

спасибо за отклик

скачиваю NativeXml если будут вопросы, задам сюда

вот собсно главный вопрос, как работать с nativexml)))

погуглил мануал, ничего не нашёл (

я конечно почитал мануал из комплекта, но он очень непонятный, там не примеров...

посмотрел повнимательнее, в коде из первого поста, принимается всего 2 значения: имя поля и значение. у меня не парсится потому, что у меня этих значений 3. имя поля, ID поля, значение поля. попробовал каждый объект XMLItem. , не подошло ничего...

парсер EXCMLParser, код использовал из первого поста:

Цитата:
procedure DrawXMLItem(XMLItem: TXMLItem);
var
I : Integer;
begin
Memo1.Lines.Add(XMLItem.Name+' : ' +XMLItem.Text);
for i := 0 to XMLItem.SubItemCount-1 do
DrawXMLItem(XMLItem.SubItems[i]);
end;

begin
XML.LoadFromFile('d:\test\200kn.xml '); //любой xml файл, для тестирования можно и здесь указать
Memo1.Lines.BeginUpdate;
DrawXMLItem(XML.Root);
Memo1.Lines.EndUpdate;

end;
если кто-то зайдёт в эту тему, то мб подскажет

есть такая задумка: в дельфи и билдере можно использовать *.xls файл как БД, в 2007 эксель можно подгрузить *.xml файл и работать с ним, как с обычной таблицей. можно ли найти между этим какую-нибудь связь?

Последний раз редактировалось Stilet; 15.09.2010 в 08:50.
eek_eek вне форума Ответить с цитированием
Старый 14.09.2010, 23:19   #32
alex208210
Новичок
Джуниор
 
Регистрация: 14.09.2010
Сообщений: 2
По умолчанию

GenniY
nativexml просит файл nativexml.inc. можешь выложить куда нибудь его? или на мыло alex208210@mail.ru
alex208210 вне форума Ответить с цитированием
Старый 15.09.2010, 00:26   #33
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

Завтра сброшу.
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 07.12.2011, 18:15   #34
rhiannon
Новичок
Джуниор
 
Регистрация: 06.04.2010
Сообщений: 2
По умолчанию

У меня честно говоря под Embarcadero Delphi XE собрать не получилось: [DCC Error] ECXMLTokenizer.pas(160): E2026 Constant expression expected . Можно ecxml parser адаптировать для XE?

Цитата:
Сообщение от Скандербег Посмотреть сообщение
Инструкция для Delphi 7.

Скачиваем простой XML парсер http://www.eonclash.com/ECXML_Parser/ECXML_Parser.zip
Создаем каталог "ECXMLParser", там где находится Delphi (или любой другой, по вкусу).
Распаковываем в этот каталог скачанный архив.

Запускаем Delphi.
Закрываем загруженный проект File->Close All.
Вызываем команду Open (File->Open...).
Из нашего каталога выуживаем файл ECXMLParserD70.dpk
Нажимаем на кнопку Compile. После компиляции нажимаем кнопку Install.

В палитре компонентов должна появиться закладка с надписью "EC Test", где находятся два компонента.
Закрываем проект ECXMLParserD70. На запрос "записать/не записать" отвечаем: "ни за что".

Создаем новый проект. На его форму кидаем TButton, TMemo и из новой закладки компонент TECXMLParser.
У компонента TECXMLParser свойство Name меняем на XML (для того чтобы была совместимость с приведенным ниже кодом), хотя такое и не обязательно, тогда в процедуре надо будет поменять XML на свое имя.
К событию OnClick кнопки привязываем процедуру, где пишем такой текст:

Код:
procedure TForm1.Button2Click(Sender: TObject);

  procedure DrawXMLItem(XMLItem: TXMLItem);
  var
    I : Integer;
  begin
    Memo1.Lines.Add(XMLItem.Name+' : '+XMLItem.Text);
    for i := 0 to XMLItem.SubItemCount-1 do
      DrawXMLItem(XMLItem.SubItems[i]);
  end;

begin
  XML.LoadFromFile('E:\file.xml'); //любой xml файл, для тестирования можно и здесь указать
  Memo1.Lines.BeginUpdate;
  DrawXMLItem(XML.Root);
  Memo1.Lines.EndUpdate;
end;
В результате работы этой процедуры в Memo должны появиться строки вида: <наименование> : <значение>.
Текст представляемый свойством XMLItem.Text - и есть требуемые значения.

Это и будет первое упражнение по работе с файлами XML формата.
Для первых экспериментов не советую брать штатый дельфийский XML разборщик - сложновато будет и глюкавый он, на самом деле.

Дальше развивать проект автору предоставляется самостоятельно. Разжевывать программы до молекул в благородных собраниях не принято, хотя и не возбраняется и, если будут проблемы с проектом, тутошний народ с охотой пояснит все что требуется и совсем не обязательно по приведенной инструкции, путей разных - море.
rhiannon вне форума Ответить с цитированием
Старый 30.01.2012, 01:24   #35
furstenberg
Форумчанин
 
Регистрация: 08.10.2007
Сообщений: 125
По умолчанию ещё вопрос по ECXMLParser

Здравствуйте , пользуясь случаем хотел бы спросить следующее по ECXMLParser: допустим мне надо создать xml следующего формата
<?xml version="1.0" encoding="ISO-8859-1" ?>
<ETALON>
<CD1>
<TITLE>
GFHGH
</TITLE>
<NAZV>
GHGH
</NAZV>
<GOD>
GHGHGH
</GOD>
<PROCH>
GHGHGH
</PROCH>
</CD1>
<CD2>
<TITLE>
FGFGFGF
</TITLE>
<NAZV>
</NAZV>
<GOD>
</GOD>
<PROCH>
</PROCH>
</CD2>
</ETALON>
Промучавшись у меня получилось сделать то же самое, только без параметров:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<ETALON>
<CD0>
<TITLE0>
</TITLE0>
<NAZV0>
</NAZV0>
<GOD0>
</GOD0>
<PROCH0>
</PROCH0>
</CD0>
<CD1>
<TITLE1>
</TITLE1 ...
делаю так:
PHP код:
var
  
xyInteger;
  
TXMLItem;
begin
  XML
.Clear;
  
XML.Root.Name := 'ETALON';


  for 
:= 0 to 3 do
    
begin
      a 
:= XML.Root.New;
      
a.Name := 'CD'IntToStr(x);
      
a.New.Name:='TITLE'IntToStr(x);

      
a.New.Name:='NAZV'IntToStr(x);
      
a.New.Name:='GOD'IntToStr(x);
       
a.New.Name:='PROCH'IntToStr(x);

    
end;
  
XML.SaveToFile('D:\temp\1\1.xml'); 
Все манипуляции с a.text:='ccvdfdf' приводят к изменению параметров только корневого элемента XML.Root.New. Вопрос сводится к следующему -как сделать текущим a.New.Name элемент для задания его параметров?

И ещё вопрос по кодировке ECXMLParser -как открыть xml с его помощью , у которого кодировка utf-8 (или это невозможно)?
furstenberg вне форума Ответить с цитированием
Старый 30.01.2012, 01:35   #36
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

furstenberg, используйте NativeXML.

Вот как там все выглядит:
Код:
var
 x:SmallInt;
 xml:TNativeXML;
begin
 xml:=TNativeXml.Create;
 If not FileExists(aFile) then exit; 
 try
 for x:=0 to 3 do
 begin
  With xml.root do
   begin
   WriteInteger('Имя переменной',Значение типа Interger);
   WriteString('Имя переменной','Значение типа String');
   With NodeNew('LOOL') do
   begin
    //Создадим ветвь "LOOL"
   end;
   end;
 end;
  xml.xmlFormat:=xfReadable;
  xml.SaveToFile(aFile);
 finally
 xml.Free;
 end;
end;
Вот так все просто... и это далеко не все.
Человек_Борща вне форума Ответить с цитированием
Старый 30.01.2012, 01:40   #37
furstenberg
Форумчанин
 
Регистрация: 08.10.2007
Сообщений: 125
По умолчанию

ладно, попробую native раз там всё так просто
furstenberg вне форума Ответить с цитированием
Старый 30.01.2012, 13:00   #38
furstenberg
Форумчанин
 
Регистрация: 08.10.2007
Сообщений: 125
По умолчанию Установка и использование NativeXML

Скачал NativeXml402 из вышепреведённой ссылки- в архиве файлы .pas.
NativeXml - не визуальные? Скопировал *.pas в lib\. Добавил в uses NativeXml. При компиляции верхнего кода ошибка. Платформа Delphi 7.
Что я не так делаю?
furstenberg вне форума Ответить с цитированием
Старый 30.01.2012, 14:07   #39
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Сообщение от furstenberg Посмотреть сообщение
Скачал NativeXml402 из вышепреведённой ссылки- в архиве файлы .pas.
NativeXml - не визуальные? Скопировал *.pas в lib\. Добавил в uses NativeXml. При компиляции верхнего кода ошибка. Платформа Delphi 7.
Что я не так делаю?
не визуальный компонент это. На койтам визуализация?(Место занимать?)
Спасибо за то, что сказали про 402... таакс..

распаковываем:
из папки general копируем все *.pas в nativexml папку.
Из nativexml можно удалить demos папку.
Далее nativexml папку, копируем ну.. в $(DELPHI)\Lib\
Далее в Library и в Browsing Path(Искать в настроках среды) добовляем строку:
$(DELPHI)\Lib\nativexml\

чтобы среда видела модули.

ВсО.
Человек_Борща вне форума Ответить с цитированием
Старый 30.01.2012, 15:34   #40
furstenberg
Форумчанин
 
Регистрация: 08.10.2007
Сообщений: 125
По умолчанию

добавил в либ $(DELPHI)\Lib\nativexml
и в browsing path $(DELPHI)\Lib\nativexml

папка nativexml в кат lib, в нкй файлы:
NativeXml.pas
NativeXmlObjectStorage.pas
NativeXmlObjectStorageFPC.pas
NativeXmlOld.pas
NativeXmlWin32Compat.pas
sdDebug.pas
sdSortedLists.pas
sdStreams.pas
sdStringTable.pas
Ошибка при создании xml1:=TNativeXml.Create;

в uses NativeXML.
furstenberg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML (Delphi) VadEr Помощь студентам 11 23.06.2009 23:32
xml в delphi /Arven/ Компоненты Delphi 0 23.04.2008 22:47
SQl+DELPHI+XML Рома БД в Delphi 5 17.08.2007 04:21
Xml и Delphi KlErik Общие вопросы Delphi 2 14.05.2007 09:54