gifts2017

Некоторая помощь по работе с xml в мобильном приложении

Опубликовал Ololo Anonim (ololoanonim) в раздел Программирование - Универсальные функции

Это первое мое творчество, не судите строго :)

Столкнулся с проблемой выбора файлов в определенной папке. Погуглив наткнулся на статью http://infostart.ru/public/155226/, но так как я только зарегестрировался, скачать это чудо у меня не вышло. Почитав СП нашел интересную функцию НайтиФайлы(). сел, подумал и написал своеобразный выход из ситуации. Были использованны две табличные части, две кнопки и 10 строчек кода.

Смысл моего алгоритма прост: берем конкретную папку и ищем в ней все файлы с расширением xml и записываем их в табличную часть. Потом указав галочкой нужный, парсим его во вторую табличную часть. все просто, а главное работает :) 

Вот код: 

&НаКлиенте
Процедура СозданиеПапки(Команда)

Объект.ДанныеОПути = "\storage\sdcard0\data\"; //"c:\ss\";//
Для Каждого Элем из НайтиФайлы(Объект.ДанныеОПути,"*.xml") Цикл
ОбработкаСпискаВыбора(Элем.Имя);
КонецЦикла;

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

&НаСервере
Процедура ОбработкаСпискаВыбора(Имя)

ТЧ = Объект.Табличка.Добавить();
ТЧ.ИмяФайла = Объект.ДанныеОПути + Имя;

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

&НаКлиенте
Процедура ДругаяКоманда(Команда)
Для Каждого Стр из Объект.Табличка Цикл
Если Стр.Выбор = Истина Тогда

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(Стр.ИмяФайла);//(ПутьКФайлу);

// чтение осуществляется по одному тегу
Пока Чтение.Прочитать() Цикл
// анализируем тип элемента и его имя
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если Чтение.Имя="tovar" Тогда
// создаем новый элемент 
ТЧ = Объект.Данные.Добавить();
// читаем атрибуты
Пока Чтение.ПрочитатьАтрибут() Цикл
Если Чтение.Имя="kod_tovar" Тогда
ТЧ.Код = Чтение.Значение;
ИначеЕсли Чтение.Имя = "naim_tovar" Тогда
ТЧ.Наименование = Чтение.Значение;
ИначеЕсли Чтение.Имя = "cena" Тогда
ТЧ.Цена = Чтение.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;

КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Надеюсь что это поможет кому-нибудь :)

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Ruslan (flyer) 30.05.14 12:06
вот эта строчка смущает Объект.ДанныеОПути = "\storage\sdcard0\data\";
для какого устройства сделал?
вот если не поленился бы и универсальную написал бы для самых распространенных устройств вот за это спасибо и $m было бы.
2. Ololo Anonim (ololoanonim) 02.06.14 06:55
(1) flyer, Писал под свой андроид, и эта строка пути была взята для тестирования.