Для себя Напиши код программы на java, которая делает следующие: запрашивала что мы хотим сделать? и выводила список значений, где 1 - Список кодов маркировки из xml 2 - Формирование УПД Импорт, 3. Сравнение КМ 1. Читает xml-файл находит в нем теги <КИЗ>КИЗ> и выводит значение этого тега с каждой новой строки давай сделаем чтобы при запуске открывалось окно с выбором файла. последней строкой, я хочу чтобы он вывел количество этих значений, нумерация с 1. 2 - Формирование УПД Импорт. При выборе 2, программа запрашивает xml-файл c текстом “Выберете УПД“ и помещает его во временное хранилище. Далее запрашивает csv-файлы с текстом “Выберете файлы с кодами маркировки“, файлов может быть несколько, каждый файл создает временный массив данных. Далее происходит экранизация кодов. В консоле программы вывести сообщения “Запущена экранизация КМ“. Программа пробегает по каждому временному массиву, и меняет элемент массива. после обработки файла выводить сообщение (файл с именем обработан). В каждом файле будут перечислены коды маркировки, пример КМ 0104650474008697215HhyTF'wV'eOh. пример экранирования не экранированный код 0104650474008697215pl“%I:m*FZNJ после экранизации 0104650474008697215pl"%I:m*FZNJ Суть экранирования: в каждом коде нужно искать символы <,>,&,',“и заменять их в коде маркировки на значения : < заменить на < > заменить на > & заменить на & ' заменить на ' “ заменить на " Экранирование нужно сделать отдельной функцией или константами, так что возможно будем к нему обращаться в других процессах При этом программа должна понимать, если найдет значение ", ', &, > или < - то экранизация этого кода не требуется. Сначала экранируем &, затем остальные символы. Если при поиске символов для экранирования найдено одно из значений ", ', &, > или < - то нужно пропустить эти элементы и искать дальше, до конца массива После экранирования значения помещаются во временный файл, для каждого Excel-файла отдельно. Далее в консоле программы выводится сообщение “Добавление КМ“ Мы берем xlm-файл, находим тег <СведТов>, а в нем “КолТов“ и получаем целое значение этого реквизита. Например <СведТов НомСтр=“1“ НаимТов=“Полотенце с флористическим орнаментом, оранжевое“ ОКЕИ_Тов=“796“ НаимЕдИзм=“шт“ КолТов=“7431.00“ ЦенаТов=“392.86“ СтТовБезНДС=“[Телефон скрыт]“ НалСт=“20%“ СтТовУчНал=“[Телефон скрыт]“> КолТов будет = 7431. Получив это значение, мы ищем в наших временных Excel-файла количество кодов (нумерация от 1). Найдя этот файл мы копируем из него всего экранированные коды и каждый код добавляем в xml-файл в тег <НомСредИдентТов> НомСредИдентТов> который должен находиться в теге <ДопСведТов> далее записываем КМ из временного файла в тег <КИЗ>КИЗ> записывая каждый код с новой строки. Пример <ТаблСчФакт> <СведТов НомСтр=“1“ НаимТов=“Полотенце с флористическим орнаментом, оранжевое“ ОКЕИ_Тов=“796“ НаимЕдИзм=“шт“ КолТов=“2.00“ ЦенаТов=“392.86“ СтТовБезНДС=“[Телефон скрыт]“ НалСт=“20%“ СтТовУчНал=“[Телефон скрыт]“> <СвДТ КодПроисх=“792“ НомерДТ=“10013160/050525/5192549“/> <ДопСведТов ПрТовРаб=“1“ КодТов=“4650474008697“> <КрНаимСтрПр>ТУРЦИЯКрНаимСтрПр> <НомСредИдентТов> <КИЗ>0104650474008703215h!3F,G<BPMXqКИЗ> <КИЗ>0104650474008703215JJI&Y,TyHU2=КИЗ> НомСредИдентТов> ДопСведТов> <Акциз> <БезАкциз>без акцизаБезАкциз> Акциз> <СумНал> <СумНал>583865.51СумНал> СумНал> СведТов> и дальше ищем следующий блок <СведТов>, обычно сколько файлов, столько и блоков <СведТов> Правильная структура xml ТаблСчФакт , в нем находится СведТов, внутри находится ДопСведТов, а в нем уже НомСредИдентТов, а в нем КИЗ 3. Сравнение КМ Читает xml-файл находит в нем теги <КИЗ>КИЗ> и выводит значение этого тега с каждой новой строки давай сделаем чтобы при запуске открывалось окно с выбором файла. Найденные данные записываем во временный массив, вторым шагом запрашиваем csv-файл и считываем оттуда все заполненные строки и записываем во временный массив. Следующим шагом сравниваем полученные временные массивы. Сравнение: По количеству элементов массива, если количество отличается, то сообщить в каком файле и на сколько элементов больше. Сопоставляем по символам, с учетом экранизации символов из пункта 2. то есть 0104650474008697215pl“%I:m*FZNJ будет равен значению 0104650474008697215pl"%I:m*FZNJ