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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2008, 18:13   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
Вопрос Как работать с XML?

Привет всем!

Мне необходимо прочитать данные из XML файла в массив записей! Я пытался разобраться с XMLDocument но у меня не получилось!! Подскажите, как это сделать!

Вот XML:
Код:
<?xml version="1.0"?>
<music>
	<muz>
	<name>No Artist - No Album</name>
		<filename>c:/Muz/NoArtist.mp3</filemane>
		<length>247</length>
	</muz>
	<muz>
		<name>No Artist - No Album</name>
		<filename>c:/Muz/NoArtist1.mp3</filemane>
		<length>203</length>
	</muz>
</music>

А вот в этом должно всё быть:
Код:
Muz=Record
	name:String;
	filename:String;
	length:Word;
end;
Код:
Music=Array of Muz;
Никки вне форума Ответить с цитированием
Старый 17.01.2008, 22:20   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Тут все очевидно - нужен парсер, либо самописный либо стандартный. Так как это XML, ясно что есть стандартные, ты не первый кому это надо.
Если вышеуказаная структура это все что требуется, за полчаса можно самому написать, чтоб теги читал. Ключевая функция Pos, ну и еще для копирования одна две понадобятся.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 17.01.2008, 23:40   #3
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

А можно пример использованя стандартного парсера?
Никки вне форума Ответить с цитированием
Старый 17.01.2008, 23:47   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Я пишу сам парсер в обе стороны, жду, возможно кто-то в тему универсальный быстрый способ скинет
Alar вне форума Ответить с цитированием
Старый 17.01.2008, 23:49   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Никки Посмотреть сообщение
А можно пример использованя стандартного парсера?
Чего не знаю того не знаю, могу функцию свою написать, но это будет велосипед сто процентов
Стандартный я имел ввиду в общем, все таки распространенный формат XML. Если никто не ответит ищи по ключевым словам XML Delphi или XML Дельфи
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 17.01.2008, 23:51   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Кидаем на форму 4 компонента
1. TClientDataSet
2. TDataSource
3. TDBGrid
4. TDBNavigator

В результате :
1. DataSource1
2. ClientDataSet1
3. DBGrid1
4. DBNavigator1

Настраиваем их свойства так чтобы получилось примерно так:
DBNavigator1.DataSource = DataSource1
DBGrid1.DataSource = DataSource1
DataSource1.DataSet = ClientDataSet1
ClientDataSet1.FileName = 'D:I\www\customer.cds'
ClientDataSet1.Active = True (самое главное этого не забыть :-))

http://www.programmersclub.ru/ahillesbd1

это старинные технологии. в примере база cds, с xml должно также работать.
Alar вне форума Ответить с цитированием
Старый 18.01.2008, 00:13   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Спасибо за разьяснение из личного опыта пишу:

Код:
// моя функция - копирайт :)
function XMLGetChild(Root: IXMLDOMNode; NodeName: String): IXMLDOMNode;
var
  Elem: IXMLDOMNode;
begin
  Elem := Root.firstChild;
  while (Elem <> NIL) do
  begin
    if (Elem.nodeName = NodeName) then
      Break;
    Elem := Elem.nextSibling;
  end;
  Result := Elem;
end;

var
  coDoc: CoDOMDocument;
  Doc: IXMLDOMDocument;
  Root: IXMLDOMElement;
  Elem: IXMLDOMNode;
begin
  Doc := coDoc.Create;
  Doc.Set_async(False);
  Doc.loadXML(Ваш xml текст);
  Root := Doc.Get_documentElement;
  Elem := XMLGetChild(Root, Имя узла тобиш вашего Muz);
  // остальные узлы по аналогии разгребаем в цикле
end;
BOBAH13 вне форума Ответить с цитированием
Старый 18.01.2008, 00:56   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

SimDesign NativeXml v2.37 for.Delphi
http://delphi.pp.ru/index.php?showtopic=437
и подобных компонент есть еще множество ) просто этот наиболее функционален
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с изображениями eliyas Помощь студентам 4 10.03.2011 22:27
как работать с *.gdb и что это за база Yuran БД в Delphi 5 27.05.2009 14:50
Как заставить работать php? yourself Помощь студентам 9 20.05.2008 08:08
Как работать c USB? Araver Общие вопросы Delphi 4 05.11.2007 18:41
Как работать с DBF Solomon БД в Delphi 7 07.08.2007 09:39