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 не будет опубликован. Обязательные поля помечены *