-Поиск по дневнику

Поиск сообщений в lj_ru_delphi

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 27.06.2007
Записей:
Комментариев:
Написано: 4


Как работать с XML-документами в Delphi? В частности, с помощью TXMLDocument?

Понедельник, 21 Октября 2013 г. 18:11 + в цитатник
Всех приветствую! Несколько лет писал на Матлабе, а тут приспичило на Дельфи программу написать.

Мне необходимо научиться работать с xml-документами. Работаю в RAD Stiduo XE3. Там есть компонент TXMLDocument, наверно, известный многим программящим на Delphi. Вроде бы и умеет много. Но проблема в том, что по нему нет понятной документации и описания. Хэлп в RAD Studio - фигня, потому что нормальной информации там нет; только разбросанная по страницам скудная справка по некоторым методам и процедурам (без примеров и нормального описания). Перерыл весь инет. Нашёл только темы на форумах с решением конкретных задач, где надо ещё час догадываться, что делает та или иная строка, связанная с обращением к xml-файлу.
Мне же нужно руководство по основным функциям, процедурам и методам, применяемым при работе с xml. Учебник, мануал, описание. Или хотя бы "xml в Delphi для чайников". Например:

Для открытия xml-файла используем метод XMLDocument1.LoadFromFile('filemane.xml'), где filename - имя файла.
Переменная nodelist типа IXMLNode служит для хранения списка дочерних элементов. Для определения этого списка служит метод Xmldocument1.DocumentElement (где XMLDocument1 - исследуемый xml-файл).
Чтобы запросить содержимое дочернего элемента 'element1' используется метод XMLDocument1.DocumentElement.ChildNodes['element1'].Text...

и в таком духе дальше по всем применяемым методам, процедурам, типам данных.
Где найти подобные мануалы/описания? Кто может помочь?

Если нужна конкретная задача, опишу её.
Имеется xml-документ вида:



LTM


fon.png
up.jpg


pano_u.jpg
pano_f.jpg


start.jpg
tmb.jpg




1910
768
512
1024
768




Some text
Some errortext
Other errortext




В коде программы имеем:

var
...
parent, child1: IXMLNode;

begin
XMLDocument1.LoadFromFile('f:\filename.xml');
XMLDocument1.Active:=true;
.
.
end


Что надо научиться делать:
(заранее извиняюсь, если неверно называю составляющие xml-документа)
1. Получить имя корневого элемента (в нашем случае ltm), а также список его атрибутов (version, type) и их значения ('1.0', 'settings').
2. Получить количество элементов, являющихся дочерними по отношению к корневому. В данном случае их 7: templateFiles, dimensions, hotspot, hotspot, data, data, data. Получить имена элементов (тэгов) (templateFiles, dimensions и т. п.). Получив количество элементов и научившись извлекать их имена, я прогоню цикл от 0 до count-1 и сделаю что мне нужно.
3. Получить количество и список атрибутов требуемого элемента. Например, для элемента hotspot. Правильный ответ будет 4 атрибута. Для первого элемента hotspot это будут name, style, scena, ath. Для второго - то же, только вместо атрибута ath - атрибут rz.
Заметьте, в файле 2 элемента hotspot, с разными атрибутами. Вот как с ними работать (если одноимённых элементов больше 1)?
Я хочу так: получаю список дочерних элементов по отн. к корневому (см. п. 2), прогоняю по ним цикл с for и найду элементы hotspot, у которых параметр name равен требуемому (скажем 'hs015_2' - такой элемент будет заведомо один). Можно ли как-то решить этот вопрос без цикла? То есть, получить значение атрибута scena для элемента hotspot, у которого name="hs015_2"?
4. Проделать вышеописанное по отношению к узлам и элементам, являющимся дочерними по отношению к дочерним. В моём примере - узел (дочерний по отношению к и родительский по отношению к и .
Если я правильно понимаю, надо как-то передать содержимое узла в переменную типа IXMLNode и делать то же, что и в п.1-3. Так?

5. Надо научиться изменять вышеуказанные параметры (задавать свои).

Вроде пока всё. На данном этапе мне важнее всего синтаксические конструкции.
Кто владеет этой темой, напишите пожалуйста и другие синтаксические конструкции для решения вышеописанных вопросов (как получить атрибуты, их кол-во, кол-во элементов, их имена и т. п.). Главное сейчас - овладеть синтаксисом, а свой алгоритм я уж реализую потом. Заранее всем огромное спасибо!

P.S. Очень не хотелось бы писать с нуля свой парсер XML только потому, что к имеющимся нет нормального описания.

https://ru-delphi.livejournal.com/270951.html

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку