Тема: Плиз помогите написать обработчик иксмл

Ответить в теме
Показано с 1 по 3 из 3
  1. Вверх #1
    Новичок
    Пол
    Мужской
    Возраст
    37
    Сообщений
    86
    Репутация
    19

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

    исходный иксмл

    <?xml version="1.0" encoding="windows-1251"?>
    <valuta>
    <dollar>
    <spros>4.864</spros>
    <predlozenie>5.027</predlozenie>
    <nbu>505.000</nbu>
    </dollar>
    <euro>
    <spros>7.628</spros>
    <predlozenie>7.944</predlozenie>
    <nbu>784.063</nbu>
    </euro>
    <date>2008040628</date>
    </valuta>

    нужно написать обработчик 1С чтобы просто выводила результаты

    вот я уже вроде написал но работать не хочет

    //Получить название Файла
    ТекДата = ТекущаяДата();
    ТекГод = Год(ТекДата);
    ТекМесяц = Месяц(ТекДата);
    ТекДень = День(ТекДата);
    НазвФайла = ТекГод + ТекМесяц + ТекДень;

    СтрАдрБазы = СтрокаСоединенияИнформационнойБазы();
    АдресБазы = СтрЗаменить(АдресБазы, "File=", "");

    АДРЕСФАЙЛА = АдресБазы + "\" + НазвФайла;

    ДолларСпрос="";
    ДолларПредложение="";
    ДолларНБУ="";
    ЕвроСпрос="";
    ЕвроПредложение="";
    ЕвроНБУ="";
    Дата="";
    ВозможнаяОшибкаЧтения="";

    Файл = Новый ЧтениеXML;
    Файл.ОткрытьФайл(АДРЕСФАЙЛА);

    //Прочитать фрагменты элемента
    Пока Файл.Прочитать() Цикл
    если не пустаястрока(Файл.ЛокальноеИмя) тогда
    Имя_=сокрЛП(Файл.ЛокальноеИмя)
    конецесли;
    //проверить тип узла


    Если Имя_ ="dollar" и Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    //Прочитать значения
    Если Имя_ ="spros" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларСпрос=Файл.Значение;
    конецесли;
    Если Имя_ ="predlozenie" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларПредложение=Файл.Значение;
    конецесли;
    Если Имя_ ="nbu" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларНБУ=Файл.Значение;
    КонецЕсли;
    КонецЕсли;
    Если Имя_ ="euro" и Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    //Прочитать значения
    Если Имя_ ="spros" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларСпрос=Файл.Значение;
    конецесли;
    Если Имя_ ="predlozenie" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларПредложение=Файл.Значение;
    конецесли;
    Если Имя_ ="nbu" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ДолларНБУ=Файл.Значение;
    КонецЕсли;
    КонецЕсли;
    //Если уже прочитаны данные курсов евро и доллара
    Если Имя_ ="euro" и Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
    //Прочитать Дату
    Если Имя_ ="date" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    Дата=Файл.Значение;
    КонецЕсли;
    //Если ошибка присвоить соотв знач соотв переменной
    Если Имя_ ="error" и сокрЛП(строка(Файл.ТипУзла))="Текст" Тогда
    ВозможнаяОшибкаЧтения="Ошибка!!! Не удалось прочитать данные";
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    //Закончить работу с файлом
    Файл.Закрыть();

    //Теперь непосредственно вывести значения
    //Проверить на ошибки
    Если ВозможнаяОшибкаЧтения="" Тогда
    Сообщить("Доллар");
    Сообщить("Спрос" + ДолларСпрос);
    Сообщить("Предложение" + ДолларПредложение);
    Сообщить("НБУ" + ДолларНБУ);
    Сообщить("Евро");
    Сообщить("Спрос" + ЕвроСпрос);
    Сообщить("Предложение" + ЕвроПредложение);
    Сообщить("НБУ" + ЕвроНБУ);
    Сообщить("Дата" + Дата);
    Иначе
    Сообщить("Произошла ошибка при чтении данных!!!");
    КонецЕсли;


  2. Вверх #2
    Сначала писал, что не правельно, потом решил лучше сам напишу кусок, вот разбирайся, что не понятно спрашивай
    Код:
    	ХМЛФайл = Новый ЧтениеXML;
    	ХМЛФайл.ОткрытьФайл("D:\GC\22.xml");
    	Пока хмлфайл.Прочитать() цикл
    		Если хмлфайл.ТипУзла <> ТипУзлаXML.Текст тогда
    			ОбрИмя = хмлфайл.Имя;
    		Конецесли;
    		Если (ОбрИмя = "spros") и (хмлфайл.ТипУзла = ТипУзлаXML.Текст) тогда
    			Сообщить(Строка(хмлфайл.Значение));
    		Иначеесли (ОбрИмя = "predlozenie") и (хмлфайл.ТипУзла = ТипУзлаXML.текст) тогда
    			Сообщить(Строка(хмлфайл.Значение));
            Иначеесли (ОбрИмя = "nbu") и (хмлфайл.ТипУзла = ТипУзлаXML.текст) тогда
    			Сообщить(Строка(хмлфайл.Значение));
    		КонецЕсли;
    	КонецЦикла;
        ХМЛФайл.Закрыть();
    Последний раз редактировалось ReeP; 08.04.2008 в 09:24.

  3. Вверх #3
    Также можно немного модифицировать код, чтобы он сам писал, что за валюта.

Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения