Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> xml parsing, требуется помощь... 
:(
    Опции темы
MadCow00
Дата 11.12.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 4.9.2007

Репутация: нет
Всего: нет



есть xml следующей структуры 

Код


<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<Ent RegNum="" DateFin="" Name="Составные элементы технических устройств КМО" ShortName="" DBTable="IC00.DIC_OBJECTS" Group="803" LastNotifNumber="0" WebLink="" AdditionalWebLink="" FileName="" MainTable="1" UndrCnsrct="0" Report="1" SQLText="" CGenName="OBJECT_ID">
  <Lookups>
    <Lookup LookupId="41" Description="Типы технических устройств КМО" SQLText="" ParamName="">
      <LookupFlds>
        <LookupFld Num="1" Name="Тип технического устройства" Size="450"/>
      </LookupFlds>
    </Lookup>
  </Lookups>
  <Fields>
    <Field Number="1" Name="Id объекта" Size="70" AlignNumber="2" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="2" Name="Код" Size="60" AlignNumber="2" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="3" Name="Код символьный" Size="100" AlignNumber="1" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="4" Name="Полное наименование" Size="250" AlignNumber="1" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="5" Name="Наименование" Size="130" AlignNumber="1" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="6" Name="Краткое наименование" Size="130" AlignNumber="1" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="7" Name="Id типа" Size="70" AlignNumber="2" Visible="1" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="8" Name="Тип" Size="200" AlignNumber="1" Visible="0" Filter="1" Lookup="41" FilterField="REFER"/>
    <Field Number="9" Name="Комментарий" Size="90" AlignNumber="1" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="10" Name="Признак системы" Size="70" AlignNumber="2" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="11" Name="Правка" Size="50" AlignNumber="3" Visible="1" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="12" Name="Начало" Size="70" AlignNumber="2" Visible="0" Filter="0" Lookup="0" FilterField=""/>
    <Field Number="13" Name="Окончание" Size="70" AlignNumber="2" Visible="1" Filter="0" Lookup="0" FilterField=""/>
  </Fields>
и т.д.


мне требуется извелчь значения всех признаков для дальнейшей обработки...
при использовании XML Data Binding задаю имя дока, он автоматически генерит схему, вот только делает каждый field как отдельный интерфейс, получается достаточно объемная и неприятная конструкция из разряда

Код


{ Forward Decls }

  IXMLEntType = interface;
  IXMLLookupsType = interface;
  IXMLLookupType = interface;
  IXMLLookupFldsType = interface;
  IXMLLookupFldType = interface;
  IXMLFieldsType = interface;
  IXMLFieldType = interface;
  IXMLOperationsType = interface;
  IXMLOperationType = interface;
  IXMLParamsType = interface;
  IXMLParamType = interface;
  IXMLFieldType2 = interface;
  IXMLFieldType22 = interface;
  IXMLFieldType222 = interface;
  IXMLFieldType2222 = interface;
  IXMLFieldType22222 = interface;
  IXMLFieldType222222 = interface;
  IXMLFieldType2222222 = interface;
  IXMLFieldType22222222 = interface;
  IXMLFieldType222222222 = interface;
  IXMLFieldType2222222222 = interface;
  IXMLFieldType22222222222 = interface;
  IXMLFieldType222222222222 = interface;

и т.д.


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

это возможно?
PM MAIL   Вверх
aktuba
Дата 11.12.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата(MadCow00 @  11.12.2007,  18:17 Найти цитируемый пост)
при использовании XML Data Binding задаю имя дока

А в ручную не судьба парсить?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MadCow00
Дата 11.12.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 4.9.2007

Репутация: нет
Всего: нет



ну это не ответ на вопрос как таковой, именно интересует возможность использования компонента...

может какие-то дополнительные признаки стоит задавать для самих филдов, чтобы парсер понимал в чем фишка? )

Это сообщение отредактировал(а) MadCow00 - 11.12.2007, 17:50
PM MAIL   Вверх
EvilsInterrupt
Дата 11.12.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



MadCow00, на против:
Код

  IXMLFieldType2 = interface;
  IXMLFieldType22 = interface;

Когда при создании в XML Data Binding можно убрать галочки на против ихней генерации, главное создать только IXMLFieldType и его одного хватит. Ведь
А работать можно так:
var
 XmlIf : IXMLEntType;
begin
 XmlIf := LoadXXXX...

 XmlIf.XXX.YYY.ZZZ.Params[тут твой индекс].Field

ну вобщем понял, мне влом лезть в дельфю. Но думаю мысль ясна
PM MAIL WWW ICQ Jabber   Вверх
Alix
Дата 12.12.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



Могу также посоветовать использовать другой парсер, например, от jan - просто и быстро.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
EvilsInterrupt
Дата 12.12.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Alix, Нафиг? Много руками писать, а тут готовый XML Data binding модуль делает, при малом XML-файл и строго заданной структуре это самое наилучшее решение!
PM MAIL WWW ICQ Jabber   Вверх
Alix
Дата 12.12.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



1. Красивее решение
2. Не используются интерфейсы
3. Быстрее парсит

файл, конечно, может быть и малым, но кто даст гарантию, что не будет расширения программы и файл не начнет содержать больше данных или не поменяет свою структуру?


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
aktuba
Дата 12.12.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата(EvilsInterrupt @  12.12.2007,  17:01 Найти цитируемый пост)
Нафиг? Много руками писать

Угу... А можно просто заплатить/попросить и т.д. и вообще ничего руками писать не придется ;)

Цитата(EvilsInterrupt @  12.12.2007,  17:01 Найти цитируемый пост)
а тут готовый XML Data binding модуль делает, при малом XML-файл и строго заданной структуре это самое наилучшее решение!

Честно говоря, раз 5 пробовал его использовать. Плюсов нашел мало, а минусов много. Имхо, не самый удобный инструмент. Да и много вредного и не нужного делает.

Цитата(Alix @  12.12.2007,  17:17 Найти цитируемый пост)
1. Красивее решение
2. Не используются интерфейсы
3. Быстрее парсит

Согласен. Могу добавить:

4. Лучше понимаешь механизм работы самой программы + учишься работать головой, а не руками.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
EvilsInterrupt
Дата 12.12.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Возникла мысль о том, что было бы круто, если бы кто-нить написал визард, который бы действовал также как и XML Data Binding, но только по отношению к TjanXMLParser2.
PM MAIL WWW ICQ Jabber   Вверх
Rodman
Дата 12.12.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Цитата(MadCow00 @  11.12.2007,  17:17 Найти цитируемый пост)
 неприятная конструкция из разряда

очень нормальный метод... решает за тебя много вопросов, тебе остается только правильно считать данные...

другой вариант - TXMLDocument
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MadCow00
Дата 13.12.2007, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 4.9.2007

Репутация: нет
Всего: нет



всем пасип, поковыряюсь ))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.