Двухпальцевый reader_XML …



… стало много приходить XML-файлов с неизвестной структурой …

Вот и сообразил «читальщик» XML-файлов, который открывает, читает, и выводит в «дерево» структуру таких файлов также выводит статистику по «глубине» вложенности структуры данных.

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

 Примечание. 

Если установленной глубины в 9 не хватает, добавьте код самостоятельно. В 99 случаев из 100 этого глубины чтения в 9 хватает с лихвой.

 Поиск по ИС:

  1. //infostart.ru/projects/1612/
  2. //infostart.ru/projects/2683/
  3. //infostart.ru/projects/2804/
  4. //infostart.ru/projects/1489/
  5. //infostart.ru/projects/1963/
  6. //infostart.ru/projects/1801/
  7. //infostart.ru/projects/3448/
  8. http://www.firstobject.com/   — спАсибо Ufimtsev и Ёпрст за «шустрого»

Что я вообще думаю про XML … моё мнение совпадает с мнением, находящимся здесь: http://extrapro.ru/udxml.html

 

 … ЗА дополнения, конструктивную критику, сообщения о замеченных неточностях или ошибках — буду благодарен …

Желающих продолжить работу над данным проектом прошу присоединяться.

с Уважением Шёпот теней …

… вОт …

 

 Продолжение:

Новая версия обработки: «Читальщик XML-файлов ред.2» …

 
 Решил несколько изменить обработку после обсуждения в ветке и полученных советов/рекомендаций.

 Что изменено/неИзменено:

  1. Увеличено количество чтения вложенности до 15 … (этого должно хватит на все разумные случаи жизни).
  2. Не стал делать рекурсию на чтение данных. Для простоты понимания процесса и при необходимости «вычленения» данных.
  3. Добавил возможность отдельного чтения узлов по двойному клику по нему. Если узел содержит вложенные данные, обработка их выводит в строке сообщения4. Улучшена работа прогресс бара за счет двойного чтения файла. Рекомендуется отключать в случае «больших» файлов.

 Примечание:

Данная обработка будет полезна для просмотра структуры файла XML до 10 Мб. Файлы объемом в 100 Мб, с отключенным прогресс баром, данная обработка прочитает и выведет за 3…5 минут (цифры условные т.к. зависят от многих факторов. приведены для того чтобы показать некие точки отсчета при работе с такими файлами).

Спасибо всем высказавшимся по данной обработке.

п.с.1.  Много нареканий по поводу не использования «рекурсии» в данной обработке. По разным причинам сделано намеренно. Тех, кого это смущает, прошу считать данную обработку методическим материалом.

 Продолжение 2:

 Сделаны две обработки:

  1. «Читальщик XMLфайлов ред 3» — использует оператор «Если – Тогда»
  2. «Читальщик XMLфайлов ред 4» — использует «Циклы».
  3. «Читальщик XMLфайлов ред 5» — использует «Рекурсию».

Новое у этих обработок:

  1. Форма «Настройка». Устанавливает величину читаемого размера файла. При его превышении отключается работа индикатора действия. Устанавливается цвет индикатора.
  2. Читает файл XML полностью – элементы, атрибуты, текст.

Спасибо: rasswet –  за интерес, замечания и комментарии к обработке.

98 Comments

  1. CheBurator

    зачетно.. мне бы такую для 7.7… анализировать файлы обменов…

    Reply
  2. Шёпот теней

    … CheBurator — спасибо ЗАоценкуКомментарий …

    … CheBurator, СССР — дорожу вашим мнением …

    … вОООтВашШТ …

    Reply
  3. Арчибальд

    (1)Мне тоже надо…

    Reply
  4. artbear

    Идея хорошая.

    Но по коду/реализации есть комменты:

    нафига 9 структур и т.п. ?? 🙁

    Массивы, списки, таблицы еще никто не отменял

    Reply
  5. Шёпот теней

    (4) … ммм …

    … думаю, универсальность вЕщь избыточная и как всякая избыточность она должна быть опрАвдана … а то получится как у 1С — нужно быть не только программистом но ещё и архивариусомФлажком …

    … дУмаю, что простота достигнется за счЁт рекурсии — здесь вот : http://infostart.ru/projects/3423/ — обращение к структуре с заранее неизвестным количеством вложений, у меня как раз решено именно образом рекурсии … дУмаю здЕсь это не опрАвдано …

    … если файл xml состоит из документов с одинаковой структурой но варируемым количеством это одно а если много документов с разной структурой, для чего собственно и придумывался этот тип файлов, находится в файле — тогда это другой разговор … я имею ввиду вопрос: КАК ?транспонировать таблицы превращённые в строку (xml — файл) обратно в человекоПривычный вид «шапки + двуМерной табличной частью» …

    … тем не менее Я с ОГРОМНЫМ удовольствием посмотрю на ВАШЕ решение …

    … вОтТакМНЕдумается …

    Reply
  6. WKBAPKA

    Собстно xml это совокупность узлов и их атрибутов, т.е. в принципе нет необходимости устанавливать ограничение на количество уровней… имхо

    Reply
  7. Шёпот теней

    (6) … хм … ужжж я и не знаю, что и скАзать … по-моемому я не разу не видел файла с глубиной вложения больше 7, а про использование атрибутов и совсем не помню …

    … думаю, что хмл файлы, «мёртвые» файлы … мода пройдЁт и они «пройдут» …

    … мы же не делаем один запрос к документу ..? ..! 1с всем рекомендует делать их два, один к «шапке», другой к «таблице» документа … а использование хмл подразумевает делать один запрос не только к «шапка+таблица» но и к разным объектам …

    … плюс к тому же — связываясь с хмл — мы сначалА прикладываем усилия сделать информацию «однострочной» а потом прикладываем усилию к обратному процессу, процессу «сборки» … и если использование html себя оправдывАет то xml — это ни кому не нужное усложение …

    … то, что ЭТО сложно — видно хотя бы по использованию любого редактора_ХМЛ … размеры, быстрота чтения, простота использование, удобство просмотра — ВСЁ хромает …

    … теория была крАсивой — да прАктика НЕприняла …

    … вОтМоёМнение …

    Reply
  8. Шёпот теней

    … (7) … хм … рЕшил мАлость попрАвить …

    … все «эти» сложности с использованием хмл возможно опрАвдывают себя на очень «сложных» обменах данными — типа обмен БД через интернет … хотя и ЭТО мне кАжется спОрным … особенно когда вопрос касается поиска ошибки …

    п.с. хОтя возможно я УЖЕ просто стАрый … или лЕнивый … или тУпой …

    .. уффВОТвсё …

    Reply
  9. WiseSnake

    (7,8) Не соглашусь, сейчас все в этом формате, даже файлы офиса, обмены между современными приложениями (даже себрбанк научился юзать XML ))))). XML всего лишь попытка записать информацию в прозрачном и всем понятном формате.

    >>а использование хмл подразумевает делать один запрос не только к «шапка+таблица» но и к разным объектам …

    Чтобы найти информацию в файле любого формата сначала его надо разобрать, а xml разобрать и «выдрать», например оттуда только шапку проще, чем откуда либо (если я понял о чем Вы) и с запросами это никак не связно…

    P.S. А обработка могла бы пригодиться, но не люблю не универсальные вещи, по этому использовать в такой реализации не буду…

    Reply
  10. Шёпот теней

    (9) …

    1абзац: … вопрос мнений … принято ! ..

    … согласен с тем, что потихоньку всех приучат к этому формату …

    … по-поводу прозрачности, хм…? А, рАзве другие форматы — не прозрачны…?

    2абзац: … это была попытка провести аналогию… вОзможно не совсем удАчная …

    3абзац: … чтоБЫ «выдрать» из файла информацию — не обходмо знАть его структуру … сначало как миниму прочитать и посмотреть …

    4абзац: … П.С. … в таком случае чем де ВЫ пользуетесь для просмотра структуры … ?

    … сАмое простое и быстрое что мне попалось это наверное, см.(0), Поиск по ИС: 1. http://infostart.ru/projects/1612/ — но ОНА не в 1С …

    … вот …

    Reply
  11. larisab

    > но ОНА не в 1С …

    Зато можно редактровать…

    ВооОоот…

    Reply
  12. Шёпот теней

    (11) … ))) …. принЯто … !

    … вотВедь …

    Reply
  13. larisab

    Ой, редактировать. Спросонья…

    Reply
  14. Шёпот теней

    (12) + … данная обработка изнАчально не прЕдназначалась для рЕдактирования … но вашЕ предложение вОзможно и осУществить в последующих вЕрсиях данной обработки, была бы НЕобходимость в практике …

    … ради истины: …

    … сдЕлал стандартную вЫгрузку базы из УТ в хмл … максимальная «глубина» вложений = 9 … )))

    … поЭтому данной обработки дОлжно хвАтить на всЕ случаи жизни при работе в 1С УТ 8.х … нуууу, можно для надЁжности увеличить глубину чтения до 12 … чтобы устрАнить ВСЕ взможные эксцессы …

    … вОтОднАкО …

    Reply
  15. larisab

    Да я и не настаиваю, и не критикую, я пользуюсь http://infostart.ru/projects/1612/ именно потому, что можно редактировать… И задачи в этой области у меня — это xml переносов, иногда приходиться редактировать, больше в исследовательских целях… Но иногда бывает, что проще залезть в файл переноса через редактор и воткнуть там кое что, чем переписывать все правила…

    Reply
  16. Шёпот теней

    (15) … проблема глобальности … что я имею ввиду … вЫгрузка из УТ получилась на 333 Мб …

    1. пробовал открыть данной обработкой — не хвАтает пАмяти … (повторюсь, она и не была предназначена для такКкой «глобальности») …

    2. программой указанной в (0) под 1 — так она читает по мере поступления команды от пользоваеля то псевдо-открывает быстро а узла открывает по мере поступления … выигрыша во времени не увидел по срАвнению с п.3…

    3. открыл блокнотом — «прЕлестно» … и вЕсь файл открЫл и рЕдактировать можно …?

    … вОт …

    Reply
  17. WKBAPKA

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

    Например:

    Процедура РазобратьУзел()

    Если ЭтоУзел() Тогда

    РазобратьУзел()

    КонецЕсли;

    КонецПроцедуры

    РазобратьУзел()

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

    Reply
  18. larisab

    ))))) > открыл блокнотом — «прЕлестно» … и вЕсь файл открЫл и рЕдактировать можно …?

    Да кто ж спорит!!! и не раз… но мне еще надо посмотреть тип выгруженного элемента данных и пр…

    > вЫгрузка из УТ получилась на 333 Мб …

    ну да… согласна… торговля сама по себе всегда намного больше той же бухгалтерии…

    Если речь идет о постоянных выгрузках… и то… смотря куда слать и смотря… многое что еще смотря…

    Несмотря на то, что xml позиционируется как универсальный формат обмена данными, никто не исключает и другие форматы…

    Reply
  19. Шёпот теней

    (17) … принято … !

    … обЪясниТЕ по поводу последнего абзацА …? :

    …» Кстати, когда получаешь дерево значений, для обработки информации может быть удобным использовать обычную структуру. Получается тоже самое, что дерево значений, только похоже на динамические списки. Удобно когда нужно считать атрибуты узла. » …

    … не сОвсем понял …? ещЁ рАз если мОжно …

    … вот …

    Reply
  20. Шёпот теней

    (18) … принято … !

    … каждый пользуется ТЕМ оружием какое ОН любит … нууу … или имЕЕт …

    … сОгласен, «инструменты» могут бЫть разные …

    … вОт …

    Reply
  21. WiseSnake

    (10) Именно этим http://infostart.ru/projects/1612/ я и пользуюсь… Огромный полюс этой разработки в том что она не читает(раскрывает) сразу весь xml, а только верхний уровень. Скорость открытия выше чем у всех протестированных мной и работает с большими файлами, короче есть почти все что нужно.

    > … по-поводу прозрачности, хм…? А, рАзве другие форматы — не прозрачны…?

    Нет другие форматы ИМХО не прозрачны…

    Возьмем самый наглядный пример это текстовый файл с разделителями. Попробуйте понять, что там храниться )))).

    В XML мы можем передать ВСЮ необходимую информацию, такую как тип передаваемого значения и вообще саму структуру файла. Причем мы наглядно видим какое это значение (имя, тип и.т.) и даже визуально можем понять что откуда берется и как грузить. Отсюда и большой объем xml файлов, но они великолепно жмуться. Попробуйте передать это в любом другом формате и у Вас получиться XML файл 😉

    P.S. До сих пор ИМХО существует проблема отсутствия нормальных инструментов с XML файлами (инструменты не оптимизированы), например SpyXML отличный наглядный инструмент, но слишком медленно работает. А программка из (10) отличная, но тоже подвисает на больших объемах

    Reply
  22. Шёпот теней

    (21) … принято ..!

    Reply
  23. makfromkz

    Будем смотреть)))

    Reply
  24. Шёпот теней

    (23) … и вЫсказываемся … )))

    … ищЕм если не Истину то хотя бы прАвду …

    .. вОт ..

    Reply
  25. larisab

    (20) > … каждый пользуется ТЕМ оружием какое ОН любит … нууу … или имЕЕт …

    …нуууу…. не совсем так… от задачи зависит…

    Reply
  26. larisab

    (23) а расскажи душещипательную историю про 300 форму и ее 7 и 8 приложение:)))) мне, боюсь, россиянам не объяснить… набор слов не тот, понимаешь каких…

    Reply
  27. Шёпот теней

    (25) … принЯто ..!

    Reply
  28. makfromkz

    ыыыы, как кто-то написал «ужас летящий на крыльях СОНО» ??

    дык вряд ли россиянам сможем объяснить))))

    Reply
  29. WKBAPKA

    2(19): Как выглядить дерево значений:

    Строка 1 <Узел>

    Строка 2 <атрибут>

    Строка 3 <атрибут>

    Строка 11 <Узел>

    Строка 12 <Узел>

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

    Новый Структура;

    Например, шапка документа:

    Номер = 10

    Дата = 12.02.2008

    Контрагент (это новая структура)

    ЕДРПОУ = 1000000

    Наименование = «Пупкин»

    Короче, в программном виде так:

    Структура = ПреобразоватьДеревоВВидеСтруктуры()

    Если Документ.МойДокумент.НайтиПоНомеру(Структура.Номер) Тогда



    КонецЕсли;

    Контаргент = ПолучитьКонтрагента(Структура.Контрагент.Едрпоу);

    …вОт… 🙂

    Reply
  30. WKBAPKA

    Помоему так удобнее 😉

    Reply
  31. WKBAPKA

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

    Reply
  32. WKBAPKA

    тока не помню его название

    Reply
  33. Шёпот теней

    (29) … принято ..! спАсибо за разЪяснения … бУдУдУмУдУмать … вОт …

    Reply
  34. СергейКа

    Мне нравится алгоритм чтения реализованный здесь http://infostart.ru/projects/3448/ именно своей унивесальностью. Тем более что легко и преобразовать обратно, для сохранения изменений. Есть недостаток как раз в использовании при большом xml…

    Помнится, мне приходилось специально писать обработку для анализа обменников, ибо они были более 500 мб, и ни один редактор, показывающий структуры их не открывал на персоналке, только на сервере…

    Reply
  35. Шёпот теней

    (34) … принЯто СергейКа .. ознАкомлюсь … спАсибо …

    … читАть большие по размеру файлы, соГласен прОблема, дАже простое чтЕние текстового файла рАзмером более 300 Мб составляет от 2 минут … а уж с выводом информации и вАААще рАзА в 3…4…5 дОльше …

    … видимо нужны какие-то порции данных … но если нужны дАнные с «низу» бУдет читать почти тАкже долго как и вЕсь файл …

    … дУмаю, что тАкие загрузки/выгрузки с файлом обмена «весом» больше 100 мб вАААще не нужны … лУчше частичные загрузки/выгрузки …

    … вОт …

    Reply
  36. WKBAPKA

    Шёпот у тебя что, клавиатура глючит?

    Reply
  37. artbear

    За обработку +

    за неуважение к читателям —

    Жаль 🙁

    Reply
  38. Шёпот теней

    … неДОРОГОЙ «artbear» — чЕловека нЕльзя обидЕть пока ОН сАм не ОБИДА-ется …

    … кАк скАжешь НЕдорогой … вИдимо ТЫ ИСТИНА в последней инстанции …

    … если ТЫ тАААк бОрешься ЗАуважениеКсебе будь тАк увАжителен коМНЕ НЕзаходи больше на мои ветки …

    … бЕз уважения к «тебе» … НЕтвой Шёпот теней …

    … неВОТ …

    Reply
  39. Шёпот теней

    Новая версия обработки.

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

    Что изменено/неИзменено:

    1. Увеличено количество чтения вложенности до 15 … (этого должно хватит на все разумные случаи жизни).

    2. Не стал делать рекурсию на чтение данных. Для простоты понимания процесса и при необходимости «вычленения» данных.

    3. Добавил возможность отдельного чтения узлов по двойному клику по нему. Если узел содержит вложенные данные, обработка их выводит в строке сообщения.

    4. Улучшена работа прогресс бара за счет двойного чтения файла. Рекомендуется отключать в случае «больших» файлов.

    Примечание: данная обработка будет полезна для просмотра структуры файла ХМЛ до 10 Мб. Файлы объемом в 100 Мб, с отключенным прогресс баром, данная обработка прочитает и выведет за 3…5 минут.

    Спасибо всем высказавшимся, на данном этапе разработки по данной обработке.

    … вОт …

    Reply
  40. artbear

    (4+) За обработку все-таки ставлю минус — за 15 одинаковых структур, кучу одинаковых кусков кода по 15 штук каждый 🙁

    ЗЫ раньше было только 9 🙂

    видимо, кроме копи-паста ничего не знаешь.

    Reply
  41. Шёпот теней

    (42) … нЭт … дОрОгОй … нЭчЭвО бОльшЕ НЭзнаю …

    … НЭспАсибоИнаЭтом …

    Reply
  42. СергейКа

    > … неДОРОГОЙ «artbear» — чЕловека нЕльзя обидЕть пока ОН сАм не ОБИДА-ется …

    «На обиженных воду возят» — русская поговорка.

    Увы, нетерпимость является большим минусом.

    Явная неадекватность поведения в ответ на вполне нормальную критику.

    Уговорил. Дабы не быть посланным, сам принимаю решение не заходить больше на Ваши ветки. Хотя форумные и раньше читать не мог ( http://infostart.ru/forum/messages/forum17/topic10580/message85779/#message85779 ).

    Reply
  43. Evg-Lylyk

    код жесть 🙂

    как же так? 🙁 нашлось время сделать «О программе»…

    и мелкие красивости… вроде…

    «Если ДанныеСтроки.Уровень = 1 Тогда

    ОформлениеСтроки.ЦветФона = WebЦвета.СветлоЖелтый;

    КонецЕсли;

    Если ДанныеСтроки.Уровень = 2 Тогда

    ОформлениеСтроки.ЦветФона = WebЦвета.СветлоЗолотистый;

    КонецЕсли;

    Если ДанныеСтроки.Уровень = 3 Тогда

    ОформлениеСтроки.ЦветФона = WebЦвета.Бежевый;

    КонецЕсли;

    Если ДанныеСтроки.Уровень = 4 Тогда

    ОформлениеСтроки.ЦветФона = WebЦвета.ДымчатоБелый;

    КонецЕсли;»

    (используйте ИначеЕсли покороче будет да и попонятней),

    а на нормальный код с рекурсией не хватило времени 🙁

    Интересная ссылочка http://extrapro.ru/udxml.html спасибо

    На счет более компактного и быстрого XML есть FastInfoSet, но я забросил его на первых же граблях так как замена ЧтениеXML на ЧтениеFastInfoset почему то не работала (читал что на каких то платформах с ним ошибки).

    Reply
  44. Шёпот теней

    (44) … СергейКа … жАль, что вы приняли такое решение … мне жАль …

    п.с. …. «другие» — ВОН сколько НЕпросишь — сАми лЕзут … если не с «комментариями» то хОть с «мИнусками» …

    (45) … ну, что ВЫ зацепились за эту Рекурсию …

    …ммм … воспринимайте эту обрАботку как методический материал … лично у менЯ интЕрес к этой обрАботке лежит соврешенно НЕ в плоскости рЕкурсии …

    … мои вЫводы:

    1. … занимаясь пОискОм по ИС и не тОлько — обнАружил, что почти нЕт никаких «читальщиков» и уж тЕм более редАкторов по xml в 1С… по крАне мере я не нАшёл … вОт и рЕшил привлЕчь внимАние к этой проблЕме …

    2. … про xml только ВСЕ говорят но мАло кто с ним рАботает … всЕ говорят какой ОН крутой и удОбный а обработок нЕт …

    3. … всЕм тОварищам … кто прЕдлагает усложнить кОд, прЕдалагаю написАть свом вЕрсии xml-редакторов … и я с уДовольствием по-учусь у них и уму и рАзуму (бЕз тени ирОнии) …

    … вОтВобщем …

    Reply
  45. coder1cv8

    (46) Да ты всех уже достал по-моему! Это читать не возможно, сплошные мычания какие-то! Не говоря уже о постоянной ругани в камментах, в которой ты сам на 99% виноват. Не приятно видеть такое на первой странице.

    Reply
  46. Шёпот теней

    (47) … ммм … что ещЁ могу скАзать … вот …

    Reply
  47. Ish_2

    (48) Шепот, всё-таки лучше воздерживаться от личных выпадов .

    Зачем это : неДОРОГОЙ «artbear» ?

    Замечания были вполне конструктивными.

    Reply
  48. Шёпот теней

    … (49) … ТЫ, меня удивляешь по поводу «личных» вЫпадов …

    … я огрАничил своЁ местоПребывание на ИС только «своими» вЕтками …

    … Я, своего мения никому НЕнавязываю …

    … по поводу «рекурсии» обЪснил — дрУгая задача, не в причЁсанности кода …

    п.с.1. … файлы ХМЛ плохо поддАются визуализации, нЕт или очЕнь мало «читальщиков» и «редакторов» а если есть то до жути «громоздкие» да и неУдобные …

    п.с.2. … плохая «визУализация» из-за плохой возможности их стрктурировАть и поэтому с ними трУдно рАботать …

    п.с.3. … прерасная возможность передать рАзнородные данные — огорчается дополнительным «прАвилами» стандартами обЪменА … в итоге: сложность выросла а удобство и нАглядность пропала … и если ошибки в получении дАнных пропАли то они пОявились при рАботе с самими данными …

    п.с.4. … то, что программисткая брАтия реагирует на «код», вместо того, чтоБЫ завалить ссЫлками на обрАботки с чтением_редактированием_ХМЛ — кОсвенно поДДтверждает даннУю мЫсль …

    … вОт …

    Reply
  49. Шёпот теней

    (49) … вОООбще-то … спАсибо хотел тебе скАзать … вОт …

    Reply
  50. Evg-Lylyk

    (46) «…ммм … воспринимайте эту обрАботку как методический материал … лично у менЯ интЕрес к этой обрАботке лежит соврешенно НЕ в плоскости рЕкурсии» Ну должна быть какая нибудь уникальность и даже хорошо что она будет заключатся в простоте… только смотрите у вас «плохому» научатся 😉

    (50) «что программисткая брАтия реагирует на «код»» контингент такой.

    Нашел у себя самый большой XML Crysis Save 4,5 МБ в нем 12 уровней, а вы говорите 9 достаточно.

    Посмотрел внимательно реализацию и заметил несколько моментов почему медленно:

    1. Файл считывается два раза.

    2. Индикация процесса съедает все время (желательно делать ее раз в секунду)

    3. Нет смысла в отдельном ТЗ статистики ее можно отразить и в построенном дереве XML

    4. Очень неоптимальный код чтения «много если» (для скорости и понятности нужна рекурсия)

    Кстати на тестовом файле 60 сек. O_o убрал индикацию 38 сек.(50) «что программисткая брАтия реагирует на «код»» контингент такой.

    Нашел у себя самый большой XML Crysis Save 4,5 МБ в нем 12 уровней, а вы говорите 9 достаточно.

    Посмотрел внимательно реализацию и заметил несколько моментов почему медленно:

    1. Файл считывается два раза.

    2. Индикация процесса съедает все время (желательно делать ее раз в секунду)

    3. Нет смысла в отдельном ТЗ статистики ее можно отразить и в построенном дереве XML

    4. Очень неоптимальный код чтения «много если» (для скорости и понятности нужна рекурсия)

    Кстати на тестовом файле 60 сек. O_o убрал индикацию 38 сек.

    «Я, своего мения никому НЕнавязываю» никто не навязывает вам свое мнение. Просто высказываются 🙂

    Reply
  51. Шёпот теней

    (52) … принято …

    по поводу:

    1. «два рАза» : для лучшей работы прогрессБара …

    2. пишу же … для быстроты — нужно отключать прогрЕссБар …

    3. можно и отразить … у кАждого свои вкУсы …

    4. нУУУУ … скОлько мОжно пИсать про «рекурсии» … уже вЕзде нАписал … и в «описании» и в «комментах» … сдЕлано спЕциально …!

    5. «к стати» : … сОгласен … см.п . 2 (здесь) …

    … вот …

    Reply
  52. Шёпот теней

    (52) , (53) + … вОООбще-то … спАсибо … вОт …

    Reply
  53. Шёпот теней

    … Evg-Lylyk … ))) если тЫ с «+» в комментариях по поводу меня не ошибся … ? …

    )))

    … тУт .. вООбще-то … идЁт обрАтный процЕсс …! …

    … хм … поЙду и вАм плЮсану … см. (52) … )))

    … Вот! …

    Reply
  54. Ufimtsev

    для редактирования XML пользуюсь ‘First object XML editor’.

    — не требует установки, маленькая, бесплатная, быстрая, редактирует любые по размерам XML файлы.

    Reply
  55. Шёпот теней

    (56) … спАсибо …

    …а ссылку ..?

    … вот …

    Reply
  56. Ёпрст
  57. tango

    «шепот не ваших теней»

    Reply
  58. Шёпот теней

    (58) … спАсибо … ох, ах, нУууу и шУстрый … )))

    Reply
  59. Шёпот теней

    (59) … привЕтствую тЕбя, мАэстро «tango» … )))

    Reply
  60. Шёпот теней

    спАсибо Ufimtsev и Ёпрст за «шустрого» — http://www.firstobject.com/

    .. вОт ..

    Reply
  61. ShurikOff

    Зачот!!! Пешы есчо!!!

    Reply
  62. rasswet

    открываю файл

    <?xml version=»1.0″ encoding=»windows-1251″ ?>

    — <Файл xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» ИдФайл=»NO_PRIB_77457745_7731240579774501001_20080711_2DB855­A1-7148-4F98-8F23-DBCE62942236″ ВерсПрог=»1С:ПРЕДПРИЯТИЕ7.7 08Q2002 7.70.500″ ВерсФорм=»5.01″>

    — <Документ КНД=»1151006″ ДатаДок=»11.07.2008″ Период=»31″ ОтчетГод=»2008″ КодНО=»7745″ НомКорр=»0″ ПоМесту=»214″>

    — <СвНП ОКВЭД=»28.11.;» Тлф=»730-54-54″>

    <НПЮЛ НаимОрг=»ООО «БЛАЛЛАЛА»» ИННЮЛ=»77888″ КПП=»75555001″ />

    и т.д.

    в столбце значение-пусто. отчего так?

    это отчет из 7ки выгружен

    Reply
  63. СССР

    (64) Вот ты блин своим ответ форум растянул — главная страница вытянулась до не могу.

    Reply
  64. Шёпот теней

    (64) … изИните за крамольную мЫсль … а ползунком двИгали … вОт …

    Reply
  65. Шёпот теней

    (66) … по поводу (64) … ой, что-то не то нАписал, нАверное … ))) винОват …

    … знАчит:

    … «Если файлXML.ТипУзла = ТипУзлаXML.Текст Тогда «…

    … значит строки этого ХМЛ не содержат «Текст» …

    всего существУет 3 типа:

    1. ТипУзлаXML.НачалоЭлемента

    2. ТипУзлаXML.Текст

    3. ТипУзлаXML.КонецЭлемента

    … вОт …

    Reply
  66. rasswet

    (67) а что содержат тогда? видно же что там текст.

    (65) сорри! у меня в мозилле всё нормально…

    Reply
  67. rasswet

    аналогично. выгрузка из 7ки-налог на имущество. если есть 7ка попробуйте из ней посмотреть какой-нить файлик отчетности, который выгружается

    Reply
  68. rasswet

    http://www.onlinedisk.ru/file/197043/ выложил сам файл, чтобы не искали. посмотрите, если интересно.

    (66) двигал ползунком.

    Reply
  69. Шёпот теней

    (70) … пОлучил … пОсмотрю … дОложусь … ))) … вОт ..

    Reply
  70. Шёпот теней

    (70) … если, нАпример, строку:

    <НПЮЛ НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″/>

    пЕрЕписать как:

    <НПЮЛ> НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″</НПЮЛ>

    … то рЕдакторы читают её как текст …

    … вИдимо формАт такой … и началоЭлемента и текстЭлемента и конецЭлемента ВСЁ в одном теге … стАндарты бЫвают рАзные … )))

    … это всЁ что мОгу скАзАть на уровне своих знАний по ХМЛ … (((

    … вОт …

    п.с. узнАете — не забудЬте рАссказать … бУдем ждать …

    Reply
  71. rasswet

    (72) точно не узнаю)

    так выгружает стандартный механизм выгрузки 7ки. и как ни странно всё втягивается в Такском нормально. ну да ладно. Пасиб за обработку)

    Reply
  72. Шёпот теней

    (73) … вАм спасибо .. ! удАчи … вОт ..

    Reply
  73. Шёпот теней

    (70) .. все сОООбразил …

    в строке: <НПЮЛ НаимОрг=»кккккк;» ИННЮЛ=»55555″ КПП=»666666″/>

    1. НаимОрг=»кккккк;»

    2. ИННЮЛ=»55555″

    3. КПП=»666666″

    1-3 … это Атрибуты …

    … их чтение возможно в моей обработке если в процедуре:

    «кнОткрыть_чтениеХМЛфайла» перенести код:

    Пока файлXML.ПрочитатьАтрибут() Цикл

    ____Атрибут = файлXML.Значение;

    ____Сообщить(«атрибут:» + файлXML.Имя + «=» + файлXML.Значение);

    КонецЦикла;

    и поставить его после строк:

    Если файлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

    Имя = файлXML.Имя;

    глубина = файлXML.КонтекстПространствИмен.Глубина;

    …. ВОТ сЮДА вставить код…

    … естествЕЕно сделаю и испрАвлю обрАботку для вАрианта с «Атрибутами» …

    … спАсибо вАм … ВОТ … )))

    Reply
  74. rasswet

    (75) а…ну вот будет более универсальное решение) для чтения и таких файлов! респект! как сделаете-отпишитесь-я скачаю!

    Reply
  75. Шёпот теней

    (76) … Спасибо ! … отпишУсь Обязательно … )))

    Reply
  76. Шёпот теней

    Сделаны две обработки:

    1.«Читальщик XML файлов ред 3» — использует переменные и используется оператор «Если – Тогда»

    2.«Читальщик XML файлов ред 4» использует массив и Циклы.

    Новое у этих обработок:

    1.Форма «Настройка». Устанавливает величину читаемого размера файла. При его превышении отключается работа индикатора действия. Устанавливается цвет индикатора.

    2.Читает файл ХМЛ полностью – элементы, атрибуты, текст.

    Спасибо: rasswet – за интерес, замечания и комментарии к обработке.

    … ВОТ …

    Reply
  77. Шёпот теней

    (78) дополнение в обработках:

    3.«Читальщик XML файлов ред 5» — использует Рекурсию.

    … вОт …

    Reply
  78. WKBAPKA

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

    Относительно кода, нельзя говорить, что я пишу как хочу. Считается плохим тоном в программирования в языках высокорого уровня использовать безусловные переходы 🙂 Имхо мое мнение.

    Reply
  79. Шёпот теней

    (80) …

    1. … что тАкое «хороший» или «плохой» тон прогрАммирования я НЕзнаю — мне «пофиг» …

    2. … если ВЫложите своЮ версию — лИчно мне будет интерсно и с интЕресом ознАкомлюсь с вАшим мЕтодами и спОсобами …

    П.С.

    … замеры по данной обработки при считывАнии одного и того же файла:

    1. версия_3 = 31 сек. (открывет 15 уровней — решение через Если)

    2. версия_4 = 34 сек. (открывет любое кол. уровней — решение через Цикл)

    3. версия_5 = 28 сек. (открывет любое кол. уровней — решение через Рекурсия)

    … разница между спОсобами чтения в 10% … но прОстота нАписания обрАтнАя …

    .. отсюДА вЫвод: каЖдому «гОршку» своЁ прЕдназначение …

    … вОтВОООбЩЕм …

    Reply
  80. WKBAPKA

    ну ну.версия 2 через цикл используются безусловные переходы?

    Reply
  81. Шёпот теней

    (82) … нУууу … нИкто и нЕспорит …

    оценки любОй прОгрАммы:

    1. вЫполнять ТО, что нУжно пОльзователю

    2. нАписАна она должна быть как можно бЫстрее

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

    4. пОдпрАвляться, при нЕобходимости как мОжно бЫстрее

    5. после 1-4 можно переходить от внЕшнего крАсивого вида к внУтрЕЕннему совершенству

    … ВоТ … ждЁм вАшу обрАботку …

    Reply
  82. Шёпот теней

    (82) … БЕЗусловный переход — Перейти (Goto), а Если (If) — УСЛОВие-ный переход …

    Reply
  83. WKBAPKA

    2. версия_4 = 34 сек. (открывет любое кол. уровней — решение через Цикл)

    подскажите, как через цикл реализовать «открывает любое кол. уровней»?

    Reply
  84. WKBAPKA

    я имею ввиду не используя goto

    Reply
  85. WKBAPKA

    да и вообще как в циклах можно делать неограниченное количество уровней, поделитесь технологией

    Reply
  86. Шёпот теней

    … понятно, принято, думаю, что рАзговариваем МЫ с вАми на разных языках …

    … удачи …

    … вОт …

    Reply
  87. Ish_2

    (87) Как известно, алгоритм любой сложности может быть реализован с помощью операторов цикла и альтернативы(выбора). Цитата недословная (по памяти).

    Если речь о рекурсии неопределенной глубины, то реализацию с помощью цикла while и стека можно найти где -то в google по строке «Рекурсия или цикл».

    Да и здесь на ИС уже эта тема обсуждалась.

    Reply
  88. Шёпот теней

    (89) … ммм … по моей памяти: … » … алгоритм любой сложности может быть реализован с помощью операторов …» : … кАк ни стрАннО при помощи двух операторов: «Метка» и «Если-Тогда» …

    Reply
  89. Ish_2

    Нет , Шепот , я соврал в формулировке меньше чем ты.

    Одна из формулировок теоремы Дейкстра :

    Алгоритм любой сложности можно реализовать, используя только цикл while и альтернативу.

    Или другая формулировка :

    Теорема Дейкстра. Алгоритм любой сложности можно реализовать, используя только три конструкции: следования (линейные), выбора (ветвления) и повторения (циклические).

    Посмотри в google «Теорема Дейкстра».

    Люди говорят , что Дейкстра как раз объявил войну меткам.

    Но судя по-всему он под «меткой» предполагал нечто другое , чем ты.

    Reply
  90. Ish_2

    Впрочем , все три приведенные конструкции можно реализовать с помощью

    Если -Тогда и метки . Ты это имел ввиду ?

    Под «войной меткам» , насколько я помню 80-е годы подразумевалось

    применение безусловных переходов в языках высокого уровня.

    Reply
  91. WKBAPKA

    дело не в самих то метках. дело в коде. да, одну и ту же задачу можно реализовать разными способами. Например, посмотрите мой «Финансы и анализ» для 7.7, я использовал для реализации макроязыка собственный алгоритм, который впринципе рабочий, т.е задачу решил. Но! Я счаз сам в нем не разберусь, слишком много если, т.е. условностей. А теперь я оперирую другими понятиями, лексемы, токены, деревья разбора, и алгоритм разбора моего макроязыка стал раз в десять меньше и понятнее.

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

    И относительно правил хорошего тона в программировании, то это тоже самое как и правила хорошего тона в общении. Мы ж не материся тут на форуме и не обзываем друг друга, хотя могли бы.

    Ко всему прочему не нужно забывать, что 1С интепритатор и избыточной код больше вреден чем полезен.

    Да и вообще, вижу что у афтара много времени свободного 🙂

    Reply
  92. Ish_2

    + Поправка.

    … подразумевалось ОТРИЦАНИЕ применения безусловных переходов…

    Reply
  93. WKBAPKA

    именно, представте себе код на паскале со всякими unit-ми, представте когда из процедуры в номере строки 100 идет переход на строку 1500 причем без номерка строки а по псевдониму. а когда таких переходов будет много, и еще перекрестных, можно будет абалдеть разбирая этот код.

    Reply
  94. WKBAPKA

    поэтому когда афтар говорит, что ему пофиг все эти правила, он проявляет свое невежество. Причем безо всяких наездов на афтара.

    Reply
  95. WKBAPKA

    да что там паскаль, представим себе C++ с безусловным переходом в начальной функции Mainв хер знает куда 🙂

    Reply
  96. Ish_2

    Слово «невежество» употреблено неверно.

    Шепот вполне сознательно игнорирует известные ему сложившиеся правила приличия.

    Ну , что ж . Мы его , как обычно, заклеймим. Почему ж не заклеймить ?

    В первый раз что ли ?

    Reply
  97. Шёпот теней

    (98) … вОООбщем-то спАсибо! …

    … и за стОль «обширный» кОООмментарий и за эКскурс …

    … но нАблюдается тЕнденция … снАчало МЫ пишем типА «для взрОслых» … зАтем взрослые прикидЫваются «мАленькими» … пОтом ТЫ пишЕшь «для Маленьких» .. пОтом Маленькие-взрослыЕ говорят что: «ТЫ, что мАленький … ???….» … вОООбщем чЕредуются приЁмы псИхологии — «обЁртыши» с зАконами дЕмагогии под номер «ТРИ» …

    примечание:

    повторю утвЕрждЕние, что » … алгоритм любой сложности может быть реализован с помощью операторов .. » — двух опЕраторов:

    1. GoTo — Label

    2. If — Then

    /// … вОООт …

    1. снАчало мне говорят, что используются «БЕЗусловные» переходы …

    2. пОтом говорЯт, что БЕЗусловные пЕрЕходы НЕтак пишутся …

    3. пОтом мне гОворят как «ОНИ» круто прОграммируют — НО уже ЗАбыли КАК…?

    4. нууу, и т.д. …

    П.С.

    Reply
  98. Ish_2

    Тебе должно быть лестно !

    Разные люди , используя разные приёмы психологии , пытаются вразумить Шепота : не оригинальничай в стиле . Стиль этот , невыражающий оригинального содержания, есть пёстрый фантик и не более.

    Разворачиваем фантик . И что внутри ?

    «повторю утвЕрждЕние, что » … алгоритм любой сложности может быть реализован с помощью операторов .. » — двух опЕраторов:

    1. GoTo — Label

    2. If — Then »

    Автора утверждения не приводится. Стало быть — сам Шепот .

    То, что любой алгоритм может быть реализован на ассемблере — НИКТО НЕ СПОРИТ.

    Все конструкции : 1.следования,2.ветвления,3.цикла — суть комбинации этих

    GOTO , if-Then.

    Речь шла о том , что в языках высокого уровня , например «1с»,

    («структурное программирование» — термин 70-80-х годов) НЕ НУЖНО употребление безусловных переходов (GOTO) — достаточно этих трёх конструкций.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *