На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> xml и delphi
    скажите, пожалуйста, есть ли уже готовые средства в дельфи для работы с xml-документами?
    msxml-parser может поддерживается?

    а то я скачал idom2 на основе libxmldom, начал разбираться (особо еше правда не разобрался) а оно уже не работает в строчке
    ExpandedWrap disabled
      (doc as IDomPersist).loadxml('<?xml version="1.0" encoding="iso-8859-1"?><test/>');

    access violation error выдает

    документации конечно нет, поэтому я спохватился и решил узнать, может все уже есть, а я и не знаю?

    Добавлено
    сам вроде нашел... TXMLDocument

    Добавлено
    извините за лишнюю тему, я нашел то, что мне надо.
    хотя, было бы интересно услышать мнение и замечания тех, кто с этим уже работал.
      ИМХО, Майкрософтовский парсер ресурсоемкий и тормозной. Да и не во всех системах может он присутствовать. Сначала я использовал его, а потом нашел выход получше - ECXMLParser. Более привычные Дельфийские конструкции кода, удобный, быстрый и легкий (в смысле требуемых ресурсов). Советую посмотреть. Я нашел его здесь: http://torry.net
        s-mike, ECXMLParser я там не нашел :(
        зато нашел janXMLParser2 v.1.0 и TjanXMLParser v.3.0 и XML Documents Parser из бесплатных. ты о них чего-нибудь знаешь? если слышал или работал, посоветуй тот, что получше...
          s-mike, А ты случаем тесты парсеров не гонял? Меня интересует самый быстрый парсер.

          Добавлено
          Сам пока пользуюсь этим:
          http://www.simdesign.nl/xml.html
          Если интересует "хорошая" верcия компонента - стукнитесь в приват.
          Сообщение отредактировано: mikv -
            Цитата shipbrother @
            s-mike, ECXMLParser я там не нашел :(

            А я нашел!

            Добавлено
            mikv, интересная мысль, дома займусь, а результат запостю.
              s-mike, запости... мне тоже интересно :)
              спасибо, что нашел, я че-то не догадался слово parser из поискового запроса убрать.

              блин, я вот уже дофига библиотек нашел, а какая из них лучше...
                Итак, обещанные результаты тестирования парсеров XML. Пришлось, конечно, немного повозиться. Особенно со стандартным, так как он выдает глюки обычно где нужно и где не нужно. Например, если какой-то атрибут не присутствует, выдается ошибка.

                Для упрощения восприятия результатов, наилучший результат (наиболее быстрая скорость парсирования) была принята за 100%. Остальные результаты были получены в результате деления их скорости на наилучшую.

                В тестировании приняли участие:
                1) стандартный Дельфийско-Микрософтовский парсер (TXmlDocument)
                2) еще недавно мой любимый ECXML :(
                3) Native XML (http://www.simdesign.nl/xml.html, "хорошая версия")
                4) MVRB XML, XML Documents Parser (© 2002 Равиль Батыршин.) с Torry (http://www.torry.net/vcl/internet/html/mvrbxmlparsers.zip)
                5) Jan XML Parser2 (http://www.torry.net/vcl/internet/html/janxmlparser2.zip)

                Сразу оговорю, что в тесте использовал только полноценные парсеры, позволяющие извлекать в т.ч. и атрибуты тегов по индексу.

                Тест состоял в чтении XML и вывода его в TreeView с атрибутами.

                Тест 1. Файл размером 5 Кб.
                ExpandedWrap disabled
                  MS XML:     2000 %
                  ECXML:      300  %
                  Native XML: 200  %
                  MVRB XML:   200  %
                  JAN XML:    100  %


                Тест 2. Файл размером 1,75 МБ.

                Во втором тесте ECXML остановился на этапе загрузки документа с сообщением "Invalid pointer operation". Искать ошибку я пока не стал. А победителем, как и в первый раз, вышел Jan XML Parser2, которому пока можно присвоить звание "Самый быстрый парсер XML"

                ExpandedWrap disabled
                  MS XML:     820  %
                  Native XML: 515  %
                  MVRB XML:   285  %
                  JAN XML:    100  %
                  s-mike, спасибо за интересную и полезную информацию.
                  Кстати, у этих парсеров случайно нет каких-нибудь "подводных камней", по крайней мере в течение тестов ты ничего не замечал? Неудобство в использовании, непродуманность интерфейсов, специфика какая-нибудь, недостатки?
                  вообщем, за то время которое ты с ними возился ничего в глаза не бросилось?

                  еще, вопросик, какие парсеры поддерживают XPath?
                  и еще раз спасибо за информацию и проделанную работу! :)
                  Сообщение отредактировано: shipbrother -
                    Выкладываю также код тестов для независимой экспертизы:
                    Прикреплённый файлПрикреплённый файлTestXMLParsers.zip (3.46 Кбайт, скачиваний: 1718)
                      shipbrother, насчет "подводных камней". Мне нужно еще обобщить информацию. Получится, наверно, даже небольшая статейка. Обязательно сделаю, поскольку такие моменты попадались. Но мне еще нужно разобраться, так как с некоторыми парсерами я столкнулся впервые и возможно, чего-то еще до конца не понял.

                      Добавлено
                      Еще добавлю: в тестировании я использовал оригинальные XML парсеры с torry.net, а также парсер, предложенный
                      mikv. Если кому-то известны ссылки на другие оригинальные парсеры - пожалуйста, постите их сюда. Они тоже примут участие в тестировании.

                      Под "оригинальными" я имею ввиду полноценные и самодостаточные парсеры, не использующие дополнительных компонентов и MSXML DOM Parser.
                        Цитата shipbrother @
                        еще, вопросик, какие парсеры поддерживают XPath?

                        Вот как раз лучший по результатам тестирования парсер и поддерживает :) . Даже микрософтовский вроде бы не поддерживает (во всяком случае не нашел в нем таких функций, не признает мастдай W3C).

                        Добавлено
                        P.S. Имею ввиду Jan XML Parser2.
                          Значит, теперь приступим к обещанному обзору парсеров со всеми их "подводными камнями".

                          1) TXMLDocument (Internet Tab)
                          Скажу сразу, парсер - отвратительный. Если даже промолчать о его "тормознутости", то в нем еще куча неудобств. Например, отсутствие текста нода или атрибута приводит к весьма нежелательным сообщениям об ошибках, вместо того, чтобы "вежливо промолчать" и возвратить пустую строку. Это вынуждает программиста производить проверку на наявность атрибута или текста нода, что тоже сильно сказывается на производительности. Можно еще ставить try..except, но от этого не становится легче, особенно на этапе проектирования. Одним словом, код получается более громоздким и непонятным.

                          Обновлено 3.04.2007:
                          Но нужно оговориться, что все вышесказанное справедливо для TXMLDocument по отношению как к "парсеру", если им разбирать документы сложной, непостоянной или неопределенной структуры, как в приложенном выше коде. Для упрощения, ускорения и повышения удобства работы с TXMLDocument следует использовать биндинги: xml и delphi.

                          2) TECXMLParser
                          Неплохой парсер, но, к сожелению, только для небольших файлов. На многих файлах больше мегабайта он вылетает. Средний по производительности. Так что требует доработки. Но в общем впечатление от него очень хорошие, парсер удобный. Свойства и методы интуитивно понятны. Особенно мне нравится работа с атрибутами нодов, поскольку они представлены в виде обычного TStrings. Благодаря этому можно вызывать как отдельные имена или значения нодов (Params.Names, Params.Values), так и полностью текст атрибута: Params[Index]. Так что если разобраться с его "вылетами", то можно считать его достойной заменой TXMLDocument. Особенно в свете того, что я еще скажу о лидере теста.

                          3) TNativeXml
                          Тоже средний по скорости парсер, но уже входящий в тройку лидеров. В его пользу можно сказать то, что он исключительно стабильный. В то время, когда большинство его собратьев благополучно вылетает на больших или сложных файлах, это парсер продолжает благополучно работать. Тут уж разработчики постарались. Даже по беглому взгляду на его код можно сказать, что над ним хорошо постарались. Код красиво отформатирован, содержит много комментариев. А это уже половина успеха. Тестирование подтвердило 100%-ный успех. 3-ий по скорости парсер, но при этом удобный и очень стабильный. Он еще к тому же имеет методы для записи и чтения переменных различного типа в XML. Единственное, что может "вспугнуть" - это его цена ? 29,95.

                          4) TXmlDDocument
                          Тоже довольно быстрый, удобный и стабильный парсер. Тоже ни разу не вылетал. В общем, никаких жалоб на него нет, единственное что плохо, что этот парсер вроде бы как больше не поддерживается разработчиками. Первая и единственная версия вышла в 2002 году, домашний сайт, указанный на торри не открывается. Поиск тоже ничего не дал. А жалко, если немного доработать, был бы действительно один из лучших парсеров.

                          5) TjanXMLParser2
                          Как показало тестирование, это самый быстрый парсер. Во многом это достигается благодаря ассемблерным вставкам в коде. Но на самом деле он не является безоговорочным лидером. На файлах с большим количеством нодов он вылетает вместе с программой, что наводит на мысль об ошибках в ассемблерном коде. Еще этот парсер имеет поддержку XSL и XPath, хотя с тем, как это реализовано, я не разбирался, поскольку пока практически это не использую. Трудно сказать, насколько большая доработка требуется этому парсеру, но то, что требуется - это факт. Главное, что это возможно, так как код открыт и доступен.

                          На данный момент это все, что я могу вкратце сказать о тестированных мной парсерах. Остальное покажет практика. В общем, думаю, что вопрос о том, какой парсер лучше, еще открыт, так как практически все вышеперечисленные парсеры (кроме TXMLDocument) заслуживают на внимание и у каждого из них есть свои преимущества.
                          Сообщение отредактировано: Smike -
                            s-mike, прекрасный обзор! спасибо!
                            мне бы найты теперь еще такой же обзор парсеров на JAVA... Я сначала думал, что буду писать на Delphi, а оказалось, что придеться осваивать JAVA...
                              shipbrother, ну это уже отдельная история и отдельная тема. Создавай тему Java и Delphi.
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:
                              Страницы: (3) [1] 2 3  все


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0507 ]   [ 16 queries used ]   [ Generated: 24.04.24, 22:46 GMT ]