Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Работа с XML


Автор: Komatoz 6.5.2008, 08:50
Если кто работал с XML файлами - объясните на пальцах принцип действия и особенности..
Особенно интересует процесс его формирования..

Кто чем пользуется, какие компоненты..?

Автор: rkit 6.5.2008, 09:02
От JEDI есть SimpleXML
И отличный примерчик прилагается.

Автор: Kbl4AH 6.5.2008, 09:14
формировать - не сложно, если известна структура...
я один раз формировал с известной структурой - ваще ничем не пользовался -
тупо в циклах строки добавлял в СтрингЛист и все...
а если самому с нуля формировать, то надо разбирацца со структурой...
про это мне бы тоже было интересно услышать...
кто хорошо фишку сечет - "на пальцах" объясните, плиз...

Автор: Rodman 6.5.2008, 09:32
Стандартный TXMLDocument!!!

а примеры в поиске ищи.. не стисняйся!

Автор: Komatoz 6.5.2008, 10:44
Получается с помощью TXMLDocument или SimpleXML вручную циклами формировать как при работе с treew... - узлы в деревьях..


Автор: aktuba 6.5.2008, 11:58
Атрибуты =  Свойства.
Например:
Код

<tree>
  <node attr="text" date="06.05.2008">Тут может быть текст.</node>
</tree>


Вот так например...  Аттрибуты дают большую гибкость при обработке узлов.

Автор: EvilsInterrupt 6.5.2008, 17:48
Если ini-файл содержит секцию, ключ и его значение. То при приведении аналогии с XML мне кажется логичным ключ сравнить с атрибутом тега в XML, а сам тег с секцией. Но в ini не возможно так гибко создать секцию в секции ;) а в XML можно ! ;)

Это нужно чтобы четко структурировать информацию. К примеру ты пишешь TCP-сервер, то логично внутрь включить понятие сокета, а внутрь него закинуть порт и адрес. т.е. при задании XML тебе понадобится тег <TCP_Server>, внутрь него в ложить <socket > . А уж внутрь этого тега вложить атрибуты порт и адрес: <socket address="значение " port="номер порта">.

Автор: pseud 7.5.2008, 09:21
TXMLDocument

это обертка над мелкософтовым xml-документом
можешь конечно напрямую но лучше через етого посредника
хотя в нем немного не хватает функционала, но выкрутиться можно

если тебе нужен xml при работе с базами данных, то у TClientDataSet (и его потомков) есть чудные методы
Код

SaveToFile
SaveToStream
LoadFromFile
LoadFromStream

сохранение/загрузка данных в/из xml файл/поток


Автор: MetalFan 7.5.2008, 10:51
Цитата(pseud @  7.5.2008,  09:21 Найти цитируемый пост)
можешь конечно напрямую но лучше через етого посредника

почему лучше? обоснуй.
по моему все зависит от задачи, где-то лучше напрямую, где-то нет

Автор: pseud 7.5.2008, 14:51
Цитата(MetalFan @  7.5.2008,  10:51 Найти цитируемый пост)
почему лучше? обоснуй.


я имел ввиду "удобнее", "проще" и т.д. 
ведь таково предназначение оберток (в том числе).

с точки зрения программы, наверняка, лучше работать без "посредников".
но с точки зрения скорости разработки. 
читабельности кода.
краткости кода.
вниканию в код не всегда более умных "потомков/последователей" наверно и "лучше" юзать обертку aka TXMLDocument.

Автор: MetalFan 7.5.2008, 16:21
по-моему в случае использовании интерфейсов IXMLDomXXX ненамного запутанней и больше кода получается.
так что все зависит от того, для какой цели планируется использовать XML.

Автор: FranticMan 8.5.2008, 09:31
Если тебе в XML надо хранить, к примеру, настройки программы, советую бесплатную библиотеку XMLWorks. Она может сериализировать объект (точне его published свойства) в XML и обратно. Причем НЕ ипользует майкрософтский парсер. Все получается очень просто и понятно. Примеров в сети достаточно.

Автор: Akella 10.5.2008, 13:47
http://www.delphilab.ru/content/view/56/73/

Добавлено через 14 секунд
Цитата

Данная библиотека представляет собой XML parser.
По сравнению с TXMLDocument, быстрее в разы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)