akXmlEdit — v1.5.0.7 редактор XML

akXmlEdit v1.5.0.7 — редактор XML, создавался для редактирования файлов переноса данных, правил обмена 1С.
Нормально работает с большими файлами (>50mb).
Понимает многострочные значения (код на 1С).
Удобный поиск, редактор значений.

Обновление:
v. 1.5.0.7 (12.10.2010)
Сделана возможность в панели результатов поиска сохранения этих самых результатов (маленькая кнопочка в заголовке панели)
v. 1.5.0.1
Сделана возможность удаления узлов и атрибутов
Добавлена возможность выделения нескольких элементов (в пределах одного уровня)
Мелкие багофиксы

Изначально писалась для себя, пользовался пару лет, теперь решил выложить.

Если кто-то спросит — "Нафига ты написал эту хрень?" — я отвечу, что однажды у меня возникла необходимость изменить пару значений в файле переноса данных 1С.
Размер у него был около 12 мегабайт.
Машина у меня тогда была не сказать что старая, но и не сильно крутая, с 256мб памяти.
Сначала я попытался открыть его ФАРом. Файл открылся, но работать с ним было практически невозможно, т.к. ФАР при длинне одной строки в файле в несколько тысяч символов начинал откровенно тормозить.
Естественно, я полез в сеть, скачал несколько редакторов XML более-менее приемлимого размера.
Попробовал. Не помню, что это были за редакторы, но тормозили они на моей машине с этим файлом изрядно. Немного подумав, я решил что что-то здесь явно не так, так как если программа требует для открытия 12-метрового файла порядка 150-200 метров памяти и потом тормозит от каждого движения курсора, то на такие объемы она просто не рассчитывалась.
(да, я понимаю, что в этих редакторах много крутых фич и рюшечек, но мне-то надо было всего лишь поправить пару значений).
Осознав это, я вспомнил главного злодея из 5-го элемента, и со словами "хочешь сделать хорошо — сделай это сам" — запустил Delphi.
В принципе, я уже был готов самостоятельно написать простенький и ни на что не претендующий xml-парсер, но решил сначала попробовать стандартные средства.
Кинул на форму TXMLDocument, прописал путь к файлу, и сказал "Active := True".
"Вж-ж-ж" — сказала японская автоматическая пила, и файл открылся, при чем подозрительно быстро. "Ого!" — сказали суровые русские мужики в моем лице.
В итоге выяснилось, что открывается-то он практически моментально, но при этом грузит только корневые узлы дерева. На загрузку всех узлов времени требутся значительно больше.
Что-то в районе аж целой минуты-другой 🙂 (файл, напомню, БОЛЬШОЙ).
Так что сам парсер (стандартный микрософтовский msxml3.dll) оказался ни в чем не виноват.
За что программистам из Микрософт — отдельно спасибо. Правда, далеко не все программисты Микрософт одинаково полезны — это становится понятным, если попробовать открыть такой большой файл в Internet Explorer 🙂
В общем в итоге — получилась это программа.

Узлы она подгружает динамически, т.е если файл большой, но корневых узлов немного, то откроется она практически мгновенно. При попытке раскрытия незагруженного узла, он подгружается в память, которой тоже конечно требуется парсеру немало, но зато после того как узел загружен, работа с ним идет без тормозов.
По признанию некоего "Господин ПЖ" с mista.ru — прога открыла xml на 480 Мб, и вела себя вполне адекватно, чем даже меня удивила. Правда, сколько ей потребовалось для этого памяти не говорилось, но, полагаю, очень немало.

Есть поиск с несколькими параметрами поиска.
Если в окне поиска снять галочку "Инициализировать узлы.", то поиск будет происходить только в тех узлах, что уже загружены в память(уже открывались). Т.е. не факт что во всех.
Галочка "Выводить результаты в панель результатов поиска" — если ее снять, то поиск будет идти до первого совпадения, если же ее оставить включенной, то будет просмотрен весь файл, а результаты будут выведены в боковую панель поиска. В этой боковой панели, если два раза кликнуть на строку, то откроется соотвествующий узел в основном окне.

Редактировать можно только значения атрибутов. Добавлять/удалять атрибуты/узлы — нельзя (во всяком случае, мне это не требовалось и до сих пор не требуется 🙂

Выпадающий список на панели инструментов — это выбор парсера.
Иногда одним можно открыть файлы, которые не понимает другой из-за ошибок в структуре/содержании файла.
Однако, не факт, что у вас в системе стоят парсеры OpenXML или XercesXML, и, если вы выберете отсутствующий парсер, вылезет ошибка. В этом случае просто выберите существующий парсер. И вообще — рекомендую пользоваться только MsXml-парсером.

Понимает командную строку —

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

Яндекс.Деньги 41001196540787

История версий

1.4.0.15
— В окне "О программе" добавлена возможность выделить и скопировать номер кошелька.

1.4.0.14
— Вернул стандартный меню/тулбары для отвязки от gdiplus.dll
— Окно индикации инициализации узла
— Окно индикации поиска,прекращение поиска по Esc
— исправлен глюк с панелью поиска — длинный текст не отображался

1.5.0.1
Сделана возможность удаления узлов и атрибутов
Добавлена возможность выделения нескольких элементов (в пределах одного уровня)
Мелкие багофиксы

1.5.0.7 (12.10.2010)
Сделана возможность в панели результатов поиска сохранения этих самых результатов (маленькая кнопочка в заголовке панели)

 

99 Comments

  1. Yasen

    Класс! Зачет.

    Reply
  2. JohnyDeath

    Да, хорошая программа! Я тож с такими проблемами сталкивался… много перепробывал, но эта — самая шустрая!

    Reply
  3. Spacer

    Нужная, хорошая вещь!

    Действительно, актуальная для тех,

    кто работает с xml файлами.

    Reply
  4. iddqd

    Товарищи! Не забываем выказывать свое отношение к программе! (если есть что выказывать 🙂

    Reply
  5. Mucmepukc

    спасибо! выручил!

    а то прога предлагаемая ПФ требует аж 2-го фрамеворка

    Reply
  6. CheBurator

    Пока нашел один существенные недостаток — хотел кинуть пару денежек в кошелек… а нумар кошелька с Эбаута не копируется…

    Reply
  7. iddqd

    to Сhe Burashka

    Очень, очень правильное замечание! 🙂

    Выложил новую версию, добавлена возможность скопировать номер кошелька со страницы «О программе».

    Пора задуматься, на что буду тратить честно заработанные миллионы.. 🙂

    Reply
  8. Aleksey.Bochkov

    Супер!

    Reply
  9. Aleksey.Bochkov

    Для открытия файла 250 Мб программа использовала всего 500 Мб оперативки… да и загрузила всего за минуту..

    А FAR после 10 минут загрузки сожрал 2Гб и это был не конец, просто ждать не было желания…

    Reply
  10. aim

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

    Reply
  11. iddqd

    (10) Это в планах.

    Reply
  12. Abadonna

    Плюс за описание с юмором, плюс за Абакан (почти земляки), плюс за Дельфи, плюс за реализацию.

    Итого ставим один плюс, три на ум пошло 🙂

    Reply
  13. NewNick

    еще бы по номеру строки в файлике она б позиционировалась 😉

    Reply
  14. iddqd

    (13) В смысле — по номеру строки? В самом xml-файле?

    Так там вполне может и одна строка всего быть. Только дли-инная..

    Уточни.

    Reply
  15. infossa

    Без всякого сомнения, в хозяйстве пригодиться ! 🙂

    Reply
  16. smok

    Очень не хватает удаления узлов. И множественного выбора.

    Reply
  17. iddqd

    (16) Уточни на счет множественного выбора. Множественный выбор для удаления узлов?

    Reply
  18. smok

    Да. Выделил несколько узлов и удалил за раз.

    Reply
  19. iddqd

    (19) Удаление добавить не сложно. Думаю, сделаю в ближайшие дни.

    Reply
  20. srv80

    «(14) еще бы по номеру строки в файлике она б позиционировалась ;)»

    Все красиво, но этой возможности действительно очень не хватает. Например, при обмене центом и переф, выдается ошибка «Ошибка преобразования XML(633488,15)». Беру тотал командер, жмем ф4, и «Перейти по строке» — 633488. И дальше колдуем с этой строкой. Надеюсь доступно объяснил необходимость функции позиционирования по номеру строки 🙂

    Reply
  21. iddqd

    (20) Объяснил доступно. Но, к сожалению, с использованием используемых (сорри за тавтологию 🙂 парсеров это не получится — в данный момент я не работаю с файлом напрямую, а эти парсеры предоставляют доступ только к своему уровню абстакции.

    Reply
  22. megatrend

    Хорошая идея. Реализацию пока не успел оценить, но надеюсь, что всё будет в порядке. Так держать! 😉

    Reply
  23. Поручик

    Спасибо за прогу, пригодилась. А нельзя ли сделать редактирование узлов?

    Reply
  24. iddqd

    (23) Можно. Все можно. Только надо время и желание.

    Лично меня она в том виде, который есть — устраивает полностью, но ваше пожелание я учту, и, как руки дойдут — реализую.

    Reply
  25. bazvan

    СЕНКС СЕНКС СЕНКС

    Reply
  26. linyer

    Доброе время суток с данной программой все понятно!!

    Не могли бы ли в мне объяснить что обозначают

    ТипыАтрибута РЭ, АС, К в Справочниках

    И в Документах -М, РШД, ОРД

    Reply
  27. iddqd

    (26) А нельзя ли немного поподробнее? Что за типы атрибута? Что за справочники и документы? Я так понимаю у вас вопрос не столько по программе, сколько по формату файла, который она открывает? Не уверен, что смогу вам помочь в этом случае

    Reply
  28. z-alexey

    Автору респект. Шустро работает и наглядно. Благодаря этой штуки при загрузке большого файла примерно можно понять сколько уже загрузилось в 1С.

    Reply
  29. Abadonna

    Условия:

    Процессор: AMD Athlon™ 64 X2 Dual Core Processor 3800+ частота 2000

    Количество процессоров: 2

    Технология гипертрейдинг: ДА

    Технология MMX: ДА

    Операционная система: Microsoft Windows XP Service Pack 2

    Оперативная память, MB: 2146

    Открываем мой файл переноса за апрель: CDDataАпрель2008.xml, 180 MB

    Старт — 10:00

    10:03 — появился корневой узел, жмем:

    «Инициализация узла…»

    10:14 — ждать надоело, панночка померла 🙁

    Reply
  30. kitt

    После просмотра хмл-файлов в интернет експлорере несомнено +, хотя поработать еще есть над чем.

    Автор спасибо

    Reply
  31. iddqd

    (29) А другим парсером открыть тоже не получается?

    Дело в том, что парсер я использую готовый. В самой программе основные тормоза проявляются в тот момент, когда я пытаюсь получить количество дочерних элементов узла — обращаюсь к свойству Count парсера. Так что, боюсь, здесь я ничего сделать не могу.

    А память программа в тот момент, когда «панночка померла» ест? Если да, то парсер таки что-то читает. Но вот когда он это прочитает — это науке не известно.. 🙁

    Reply
  32. Abadonna

    Да я знаю какой парсер ты используешь 😉 Дельфи рулит!

    Он однозначно считает, при этом что интересно: загрузка ЦП и памяти — 50% (забыл написать сразу)

    Reply
  33. iddqd

    Тогда единственно — попробовать оставить на часок.. 🙂 Больше, я боюсь, ничего предложить не могу. 🙁

    Только что попробуй другие парсеры — может какой у тебя в системе и стоит? OpenXML вроде как грузит весь файл в память сразу, жрет ее много (файл 10мб, памяти откушал 140мб), зато потом без тормозов. XercesXML так же как и MSXml — грузит каждую ноду отдельно.

    Правда, самый большой xml-файл который у меня есть — 15 метров. 🙂

    Reply
  34. Хышник

    ставлю + …весчь нужная…..у мну суточный файл журнала — под 60 метров…

    Reply
  35. Cbr

    Работаю с файлами до 120 Мб. Пользовался xml notepad. Этот работает однозначно быстрее. Спс, крайне нужная вещь

    Reply
  36. Altez

    (Извиняюсь, если офтоп)

    А можно ль этой тулзой

    открыть 8.1ные правила обмена из типовой обработки выгрузки хозопераций в Бухию7.7?

    В макете обработки лежит хмл-подобный текст:

    <ПравилаОбмена>

    <ВерсияФормата>2.01</ВерсияФормата>

    <Ид>8091c338-eb44-4c3a-92ac-02b449456319 </Ид>

    При открытии akXML находит недопустимый символ «<«?

    , добавил

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

    получил «Invalid XML declaration»

    при том что IE читает безошибочно.

    Что не так?

    Стоит пытаться редактировать akXMLedit-ом или для этого нужны др. редакторы?

    Спасибо.

    Reply
  37. iddqd

    (36) Восьмерки у меня сейчас нет. Можете мне выслать этот файл? Полагаю, он не очень большой?

    Выслать можно на адрес, указанный в окошке «О программе».

    Reply
  38. iddqd

    (36) В дополнение: Во вторник я уезжаю в командировку, так что если вышлете раньше — смогу посмотреть оперативно.

    Reply
  39. JohnyDeath

    А у мелкософта тоже есть нормальная бесплатная приблуда XML Notepad 2007: http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&displaylang=en

    Reply
  40. iddqd

    (39) Скачал. Как минимум — ему нужен .Net 2.0, а свою приблуду я задумывал в том числе для использования с флешки на любом компе. Завтра загружусь в XP, поставлю, посмотрю. Любопытно. 🙂

    Reply
  41. iddqd

    Попробовал XML Notepad от MS. Сипатичный. Но тормозззззз… 🙂

    Reply
  42. inspam

    Предлагаю:

    1) Добавить возможность вводить ноды и атрибуты. Добавить возможность редактировать ноды

    2) Добавить возможность Drag&Drop для перемещения нодов и атрибутов мышкой для изменения иерархии. Желательно для этого иметь множественный выбор

    3) Вывести окно запросов XPath для отбора и анализа результатов

    Reply
  43. artbear

    Запустил поиск узлов по значению на большом файле, программа поработала пара минут, подвисла и потом упала 🙁

    Памяти 2ГБ, на винте также места полно.

    Reply
  44. yansen

    Автору программы большое спасибо.

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

    Reply
  45. iddqd

    (44) Это да 🙂

    Некоторые вещи ввести можно, и даже нужно, но мне не нравится микрософтовский парсер.

    Я написал свой. По скорости — как минимум не уступает, удобен для меня как программиста. Как-нибудь, как будет свободное время — сделаю на его основе akXMLEdit2. Вот. 🙂

    PS: Учитывая, что недавно я *с гордостью* стал дважды папой — сроков не озвучиваю.. 🙂

    Reply
  46. yansen

    Автору тогда не просто спасибо, а тройное спасибо!!!

    За программу и за повышение демографической ситуации в России два раза.. 🙂

    Reply
  47. almas

    Спасибо. Быстро, просто и совкусом.

    Reply
  48. iddqd

    (46) Ну, в два раза в России — это вы мне конечно сильно польстили :))

    Reply
  49. rasswet

    файл выгрузки в 276 мегабайт!!! открылся где-то за минуты за 2-3. на 3х гб оперативки коре Е8200.

    кое как передвигалось по этому файлу. и даже работал поиск. я думаю однозначно зачет!

    Reply
  50. Alef

    (41) Занятно, что программисты Microsoft ее для своих целей написали. Они, видимо, с файлами выгрузки не работают 😥

    Reply
  51. astonvilla

    Однозначный плюс. Для работы с файлами обмена самое оно…

    Reply
  52. AndreyKyiv07

    Спасибо, выручила прога! В обмене ошибка выдавалась, а с отправителем говорить — сложно. Удалил док. с ошибкой — все и принялось!

    😀

    Reply
  53. alexch8

    Спасибо. Очень пригодилось при внесении небольших изменений в файлы обмена данными 1С.

    Reply
  54. iddqd

    Всегда пожалуйста! )

    Reply
  55. respublica

    Если планы развития этой программы?

    Reply
  56. Lexus

    как и автор, столкнулся с необходимостью просмотра (и «мелкой» правки) большого файла (несколько десятков метров), попробовал десятка полтора программ, но ни в одной кроме этой так и не дождался даже открытия файла 🙂

    Reply
  57. StepByStep

    Давно и успешно пользуюсь программой.

    Автору БОЛЬШОЕ СПАСИБО.

    (55) respublica,


    Если планы развития этой программы?

    Присоединяюсь.

    Reply
  58. isn

    не открывает файлы обмена размером больше 300 мегов — вылетает с ошибкой.

    Reply
  59. isn

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

    Reply
  60. isn

    Проблема была не в программе, а в самом файле, конец файла битым оказался. Файл открывает. Правда в таком большом файле поиском воспользоваться не получилось. После отмены поиска — память программа, которая она «отжала» не вернула — это порядка 3Гб оперативки.

    Reply
  61. iddqd

    (60) При поиске программа инициализирует все узлы. Если их много — то и памяти много ест. Т.е. при запуске программа грузит только корневые узлы. При раскрытии узла — подгружает дочерние. При поиске — грузит все.

    (57)(55)

    Собираюсь как-нибудь выбрать время, и добавить в программу добавление (сорри за тавтологию) узлов/атрибутов. Мне самому это не надо, но программа пользуется популярностью, что обязывает :). Больше планов нет.

    Reply
  62. Alister

    (61) спасибо за программу, помогает часто 🙂

    Reply
  63. tango

    весьма приятная штучка

    Reply
  64. ccserg

    Круто ! Открыл файл 610 мб !

    Reply
  65. turboatom

    Отлично, 600мб файл пару мин и все как на ладони!

    Reply
  66. jhfrek

    Вещь!!! Молодец!!!

    Reply
  67. mikmike

    Программа понравилась !

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

    Работаю с алкогольной отчетностью — там бывает при проверке выскакивает, что ошибка в строке № …

    Можно ли сделать переход на строку? не внутри атрибута, а в целом по файлу

    Reply
  68. AllexSoft

    +1 за дальнейшее допиливание сего замечательного продукта

    Reply
  69. StaticUnsafe

    Хорошая прога, пользовался предыдущей версией.

    Reply
  70. Adeptus

    Пользуюсь плагином Syn v2.04: TotalCommander Lister Plugin

    Reply
  71. gull22

    Спасибо автору за продукт! Пользуюсь.

    Reply
  72. isn

    Пользуюсь notepad++, после того как пытался открыть файл размером 450 мегов.

    akXMLedit вылетел с ошибкой.

    Проги файлы такого размера открывают точно:

    EditPadPro,

    notepad++

    UltraEdit

    Reply
  73. adva

    Присоединяюсь к благодарностям, пользуюсь давно, очень удобная вещь

    Reply
  74. DrAku1a

    Прикольно! Авось и пригодится )

    Reply
  75. KliMich

    Спасибо автору! Давно использую. Отличный редактор. Однозначно плюс!

    Reply
  76. LexSeIch

    Мир этому дому!

    Только вчера разбирался с этой темой — искал новый редактор (пока пользуюсь XmlPad). Поэтому обработка в тему — взял на заметку. Плюс.

    Reply
  77. axxell

    Привет!

    Пару раз пытался загрузить — сообщение об ошибке архива. Можете сообщить альтернативный адрес закачки?

    Reply
  78. robot2344332

    пользуюсь firstobject XML Editor — открывает, редактирует xml файлы любого размера, работает очень быстро

    причем бесплатно

    Reply
  79. Жолтокнижниг

    (78) robot2344332, никогда еще не подводил

    Reply
  80. Yran

    Скачал, а архив не распаковывается!!!

    Reply
  81. FractalizeR

    (72) isn, Открыть — это одно. А как там со строками длиной в несколько килобайт?

    Reply
  82. smitti911

    Пользуюсь notepad++ или XmlPad . Быстро удобно и бесплатно.

    Reply
  83. iov

    http://habrahabr.ru/post/100949/ пять копеек в копилку автору на заметку о возможностях других редакторов

    Reply
  84. iov

    ох и как я мог забыть ru.wikipedia.org еще немножко

    Reply
  85. iov

    Автору — плюсик в любом случае в копилку положил.

    Reply
  86. iov

    и почему автору бы не добавить в вики и свою программу?

    Reply
  87. jobkostya1c8

    ОЧЕНЬ большой плюс. Отладка экстренной выгрузки в боевых условиях 🙂 Раз и открыл с иерархией.

    Reply
  88. eruil

    А как на счет файлов более 2Гб ?

    Reply
  89. eruil

    (78) robot2344332,

    firstobject XML Editor — ошибка при открытии файла более 2Гб

    Reply
  90. iddqd

    (88) eruil,

    Боюсь, ничего подсказать не могу — файлов такого объема у меня просто нет, проверить не на чем

    Reply
  91. eruil

    (90) проверил akXmlEdit — v1.5.0.7

    Ошибка — Недостаточно памяти для завершения операции.

    Файл 2.5Гб программа не переварила. Жаль.

    Пока из открывших и позволивших работать с файлом — это Oxygen XML editor (64bit)

    Но и эта программа на таком большом объеме бьет файл на pages, где просмотр и работа со структурой возможна только в рамках отдельной страницы. А замена по всему документу не работает.

    Поиск XML редактора для больших (более 2Гб) файлов продолжается.

    Reply
  92. eruil

    Открыл для себя 010 Editor

    Отличная программа, прекрасно работает с большими файлами (более 2Гб) и довольно шустрая.

    Reply
  93. Lapitsky.Nick

    Ай, красавец … открывает и читает и изменяет даже с супер функцией ПОИСК )))

    Вообщем файл размером 1 гиг открыл и исправил )

    Reply
  94. rar_xxx

    Недостаточно памяти для завершения операции. Пытаюсь открыть XML файл 2,5 ГБ. Оперативы 16 Гб. Свободно 12 ГБ.

    Reply
  95. Поручик

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

    Reply
  96. eruil

    (94) rar_xxx, попробуйте 010 Editor, должен справиться.

    Reply
  97. Aleksey81

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

    Уже в первые 5 минут обнаружил великолепные и (!!!) уникальные функции

    а) Отображение имени узлов, в которых только одно свойство (а таких более половины в правилах обмена)

    б) Фантастически удобная функция «выводить результаты поиска в панель результатов поиска»

    Автору низкий поклон !!!

    Reply
  98. Insanity

    включил, выбрал файл — увидел полное свёрнутое дерево. 🙂

    Хорошо когда есть программисты, которые выкладывают продукт не «лишь бы работало» а вполне себе законченную вещь. Спасибо.

    Reply
  99. kiruha

    У нас большие файлы от 100 Мб до 2 гб

    150 Мб уже минут 10 разворачивает дерево …. Короче убил процесс.

    Блокнот открывает сек 40.

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

    В файле всего один корневой узел, что часто в xml.

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

    Reply

Leave a Comment

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