|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2013, 16:59 | #1 |
Регистрация: 21.10.2013
Сообщений: 4
|
Как работать с XML документами при помощи TXMLDocument в Delphi?
Всех приветствую! Мне необходимо научиться работать с 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.ChildN odes['element1'].Text... и в таком духе дальше по всем применяемым методам, процедурам, типам данных. Где найти подобные мануалы/описания? Кто может помочь? Если нужна конкретная задача, опишу её. Имеется xml-документ вида: Код:
Код:
(заранее извиняюсь, если неверно называю составляющие 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. Проделать вышеописанное по отношению к узлам и элементам, являющимся дочерними по отношению к дочерним. В моём примере - узел <images> (дочерний по отношению к <templateFiles> и родительский по отношению к <pano> и <tiles>. Если я правильно понимаю, надо как-то передать содержимое узла <images> в переменную типа IXMLNode и делать то же, что и в п.1-3. Так? 5. Надо научиться изменять вышеуказанные параметры (задавать свои). Вроде пока всё. На данном этапе мне важнее всего синтаксические конструкции. Кто владеет этой темой, напишите пожалуйста и другие синтаксические конструкции для решения вышеописанных вопросов (как получить атрибуты, их кол-во, кол-во элементов, их имена и т. п.). Главное сейчас - овладеть синтаксисом, а свой алгоритм я уж реализую потом. Заранее всем огромное спасибо! |
22.10.2013, 12:19 | #2 |
Форумчанин
Регистрация: 05.07.2010
Сообщений: 136
|
Получить имя корневого элемента
XMLDocument1.ChildNodes[0].NodeName Список его аттрибутов получается в цикле от 0 до XMLDocument1.ChildNodes[0].AttributeNodes.Count - 1 Имя аттрибута XMLDocument1.ChildNodes[0].AttributeNodes.Get(I).NodeName; Получить количество элементов, являющихся дочерними по отношению к корневому XMLDocument1.ChildNodes[0].ChildNodes.Count Остальное по аналогии, если что-то непонятно - смотри в выпадающем списке синтаксис-помощнике, там и методы и поля объектов все расписаны ))) Последний раз редактировалось igh0st; 22.10.2013 в 12:31. |
22.10.2013, 14:08 | #3 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
http://www.bing.com/search?q=delphi+...lt&FORM=IE10TR |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Парсинг XML с использованием TXMLDocument | ВанекПВМ | Компоненты Delphi | 3 | 05.02.2013 10:54 |
Qt + XML Программа работы с документами | Nikiforov_Alex | Фриланс | 0 | 08.12.2010 08:40 |
Работать в Word, не открывая документы (работа с закрытыми документами Word) | Георгиевич | Microsoft Office Word | 10 | 07.09.2009 11:19 |
Управление Ecxel при помощи Delphi | nikolai_P | Общие вопросы Delphi | 9 | 12.03.2009 09:00 |
Как работать с XML? | Никки | Общие вопросы Delphi | 7 | 18.01.2008 00:56 |