8.х Чтение XML

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Romik, 9 апр 2010.

  1. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Читаю XML файл, по порядку снизу вверх выдёргиваю из файла значение параметров.
    Но, если данный параметр не находится, из-за того что он по другому назван или ещё чего.
    То чтение всё продолжается и доходит до конца файла.
    А после этого ещё были параметры которые необходимо считать.
    Подскажите как сделать чтение по правильному?

    Код:
    Пока ЧтениеXML.Прочитать()Цикл
    ИмяУзла = ЧтениеXML.ЛокальноеИмя;
    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ИмяУзла = "Height" Тогда
    ЧтениеXML.Прочитать();
    Высота  = ПолучитьТекстЭлементаХМЛ(ЧтениеXML);
    Прервать;
    КонецЕсли;
    КонецЦикла;	
    
    Возврат(Высота);
    
  2. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Актуально... :unsure:
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не совсем понятно. У вас сама логика работы функции такая, что выход из цикла чтения происходит только если найден узел Height. Если он не найден возвращается ммм... думаю возвращается 0 (или пустая строка, или неопределено... хз). Инициализации переменной "Высота" по умолчанию не вижу. А что надо получить?
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    А... думаю понял что хотите...
    Заведите в этой функции структуру с необходимыми параметрами, присвойте значение по умолчанию. Читайте весь файл (т.е. Прервать уберите и добавьте соответствующие условия), заполняйте соответствующее значение структуры найденными параметрами, в конце возвращайте структуру, а не одно свойство.
  5. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Можно привести пример на моём коде, если не трудно.. :unsure:
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    СтруктураПараметров=Новый Структура;
    СтруктураПараметров.Вставить("Height"    ,10);
    СтруктураПараметров.Вставить("Width"    ,100);
    СтруктураПараметров.Вставить("Length"    ,10);
    СтруктураПараметров.Вставить("Depth"    ,10);
    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл("bla bla bla");
    
    Пока ЧтениеXML.Прочитать()Цикл
    ИмяУзла = ЧтениеXML.ЛокальноеИмя;
    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    
    Если ИмяУзла = "Height" 
    ЧтениеXML.Прочитать();
    СтруктураПараметров.Height  = ПолучитьТекстЭлементаХМЛ(ЧтениеXML);
    Продолжить;
    КонецЕсли;
    
    Если ИмяУзла = "Width" 
    ЧтениеXML.Прочитать();
    СтруктураПараметров.Width  = ПолучитьТекстЭлементаХМЛ(ЧтениеXML);
    Продолжить;
    КонецЕсли;
    
    Если ИмяУзла = "Length" 
    ЧтениеXML.Прочитать();
    СтруктураПараметров.Length  = ПолучитьТекстЭлементаХМЛ(ЧтениеXML);
    Продолжить;
    КонецЕсли;
    
    Если ИмяУзла = "Depth" 
    ЧтениеXML.Прочитать();
    СтруктураПараметров.Depth  = ПолучитьТекстЭлементаХМЛ(ЧтениеXML);
    Продолжить;
    КонецЕсли;
    
    КонецЕсли;
    КонецЦикла;    
    
    Возврат(СтруктураПараметров);
    
    
    
    как-то так попробуйте.. не проверял..

Поделиться этой страницей