Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Работа с XML в Delphi

Автор: sog
Дата сообщения: 18.05.2004 10:07
Привет!
Какими компонентами удобней всего работать с XML в Delphi 7?
И где их можно достать?
Автор: diezel
Дата сообщения: 18.05.2004 11:07
LMDToolsб у них хороший парсер, сам пользуюсь.
А с нахождением в варезник
http://forum.ru-board.com/forum.cgi?forum=35
Автор: Dimonka
Дата сообщения: 18.05.2004 11:28
Есть в Delphi встроенный парсер - TXMLDocument,
единственное, имеется небольшой недостаток - он должен быть привязан к форме.
Автор: Bonch
Дата сообщения: 18.05.2004 12:32
sog

Цитата:
Какими компонентами удобней всего работать с XML в Delphi 7?
И где их можно достать?

Использую XMLPartner...

Цитата:
XMLPartner helps add the power of XML to Borland Delphi, C++ Builder, and Kylix projects through native, easy to use VCL and CLX components. These powerful components simplify the process of creating, modifying, and parsing XML data documents.

hxxp://sourceforge.net/projects/tpxmlpartner/
Автор: sog
Дата сообщения: 18.05.2004 17:40
всем спасибо за советы

diezel
в LMD Tools это какой-то там XML Vault из закладки LMD Storage? что-то он не понятно как работает...
Автор: diezel
Дата сообщения: 18.05.2004 17:47
sog
РТФМ или скажи конкретно, что ты хочешь сделать
Автор: sog
Дата сообщения: 18.05.2004 18:07
загружать док из файла, обходить его, модифицировать и записывать обратно в файл
Автор: diezel
Дата сообщения: 19.05.2004 15:35
Я вообще-то использую ХМЛ для экспорта-импорта таблиц баз данных, однако думаю смогу пояснить. Поправьте, если ошибусь, но:

1. Filename - файл из которого читаешь или в который будешь писать.
2. Все пишется в память, flush делается методом Update
3. SectionAdd - Добавляет новую секцию, для меня - в ракурсе БД - поле.
3. ItemAdd - Добавляет новый элемент, для меня - запись (утрирую, потому просьба не кидать камнями).
4. Read/Write'ТипОбъекта' - читает объект из заданной секции, я например BLOB поля только с ХМЛ нормально смог переносить между бд.
5. Ну и Open/Close - тут "ноу комментс".

Не знаю насколько такое прокатит с документами, поскольку сам для них использую другие компоненты, но чем смогу - помогу.
Автор: lipkij
Дата сообщения: 20.05.2004 09:25
а по моему так нет ничего проще SimpleXML - отличный модуль - и по барабану - установлен в системе XML парсер ля нет - все в одном флаконе
Автор: sog
Дата сообщения: 20.05.2004 16:49
ясно, спасибо.
буду пробовать.
если что, еще спрошу
Автор: Pupsik
Дата сообщения: 21.05.2004 07:31
SimpleXML (http://www.mv.rb.ru/simplexml.htm) однозначно рулит!!!
Правда похоже давно не обновлялась.


Добавлено
Сегодня зашел, посмотрел: автор обещает выпуск упрощенной библиотеки TinyXML.
Автор: GreyGendalf
Дата сообщения: 21.05.2004 15:32
еще есть
OpenXML
http://www.philo.de/xml/
существует давно, регулярно обновляется.
Автор: iogun
Дата сообщения: 15.02.2007 06:13
Подскажите как добавить строку <?xml version="1.0"?> в документ xml сформированный в delphi с помощью интерфейсов
CoDOMDocument60;
IXMLDOMDocument3;
IXMLDOMElement;
IXMLDOMElement;
IXMLDOMAttribute;

т.е. не используя TXMLDocument

Разобрался
Doc.loadXML('<?xml version="1.0" encoding="windows-1251"?>');
Автор: vshersh
Дата сообщения: 18.02.2007 20:28
iogun
По правилам надо юзать
Код: createProcessingInstruction
Автор: FRALX
Дата сообщения: 20.02.2007 11:05
Юзаю NativeXML доволен
Автор: Ru55
Дата сообщения: 27.02.2007 18:54

Цитата:
Юзаю NativeXML доволен

Согласен... Тоже эти бы порекомендовал.
Автор: alexsob
Дата сообщения: 01.03.2007 19:41
NativeXML - рекомендую.
Автор: SergZZzz13
Дата сообщения: 05.06.2007 08:02
Народ, короче такая проблема. Я парсю XML через DOM. все работает если в XML тегах нет атрибутов. т.е.
если вот так
<ID num=32168>namemessage3</ID>, то не работает, а если
вот так
<ID>namemessage3</ID>, то все намана, в чем могут быть траблы, если кто встречался с подобным. Т.е. у меня
XMLDoc.LoadXML(XML_str) в первом случае возвращает false.
Автор: vshersh
Дата сообщения: 05.06.2007 10:38
SergZZzz13
Атрибуты должны быть в кавычках!

Код:
<ID num="32168">namemessage3</ID>
Автор: SergZZzz13
Дата сообщения: 05.06.2007 16:09
vshersh
Спасибо огромное, правда я до этого сам прям буквально чуть позже додумался.
Автор: oan42
Дата сообщения: 05.06.2007 23:56
Важными критериями при выборе XML-парсера/райтера являются:
всеядность;
скорость.
удобство разработки приложений при DOM или SAX парсинге.

NativeXML по этим критериям лучше, чем XMLPartner.
К тому же NativeXML проще оптимизировать и улучшить скорость
парсинга на 30-40%.

Остальные XML-парсеры глубоко не копал, но не приглянулись они мне,
IMHO, это поделки, а не солидные продукты.
Автор: Hiken
Дата сообщения: 06.06.2007 15:53
Пользуюсь JvSimpleXml из Delphi JEDI и всем доволен.
Автор: SergZZzz13
Дата сообщения: 08.06.2007 12:36
Тут вот еще вопрос один, как сделать так чтобы когда я создаю DOMDocwment, ему как то сказать что я работаю с кодировкой cp1251, а то XML с русскими символами не хотят грузица, да и вообще надо что бы XML сообщения были в кодировке cp1251
Автор: vshersh
Дата сообщения: 08.06.2007 13:16
SergZZzz13
Перед загрузкой в файле документа должна быть явно указана кодировка - иначе считается, что кодировка UTF-8
Если сильно хочется загрузить документ в кодировке 1251 не добавляя шапку к документу, можно загрузить его в строку s и вызвать метод loadXml(AnsiToUtf8(s))
Автор: afiget
Дата сообщения: 10.06.2007 10:36
SergZZzz13
Вот из проекта на С++ Builder:
Doc = NewXMLDocument ("1.0");
Doc->XML->Clear();
Doc->Active = true;
Doc->Encoding = "windows-1251";
Автор: Kins
Дата сообщения: 10.10.2007 09:35
Приветствую многоопытный люд.
Что то давно на форуме тема XML в Delphi не поднималась... все научились чтоль?
Учусь работать с XML в Delphi, есть вопросы - поможете?
Почитал мануалы, обьектная модель XML вроде в голове сложилась а вот создавать/разбирать пока не очень получается

Разьясните,плизз, отличия msxml.pas (из состава Delphi) от MSXML2_TLB.pas (полученный из msxml6.dll) ?
Пока мой учебный проект работает и с тем и с другим...

И ещё вопрос - при создании XML в файл всё пишется в одну строку (нечитабельно получается) - как после закрывающего тега конец строки вставить?

Автор: sea78
Дата сообщения: 17.10.2007 09:46
Пользуюсь родным XMLDocument ... проблем не было

Kins
Пытался повторить (про одну строку), не получилось. шли код
Автор: Kins
Дата сообщения: 17.10.2007 15:18
sea78

Сенькс, хоть кто то откликнулся

У меня Delphi7 стоит, но на панели нет такого TXMLDocument ....
Автор: sea78
Дата сообщения: 23.10.2007 12:28
Kins

Про одну строку - пример:

'<строка 1>'#13'<строка 2>'#13'<строка 3>'

Про 7 дельфу:
Я с 5 дельфы сразу переходил на 2005, поэтому тут тебе не советчик, но если нет иконки это еще не значит что нет самого невизуального компонента. Тоесть тебе больше необходима справочная система где ты ищешь "TXMLDocument " ... если повезет и в справочной системе он будет значит пол-дела сделано... останется прочитать и сделать.
А если не будет в справке - пиши, поставлю - проверим (дистриб придется искать)... удачи

Автор: afiget
Дата сообщения: 23.10.2007 12:47
Kins
Назначить непустую строку NodeIndentStr и в Options добавить doNodeAutoIndent.

Страницы: 12

Предыдущая тема: FastReport


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.