8.х Разбор простого XML

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

  1. TopicStarter Overlay
    kisol
    Online

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    395
    Симпатии:
    41
    Баллы:
    54
    Друзья, есть вот такой XML

    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    - <A>
    <url replyId="81a37629-7d8a-408a-ba8e-7d8a1d0761ca">http://192.168.0.2:8080/opt/out/Ticket/1192</url>
    <url replyId="7111ebd3-dd1f-4ae1-9e6c-c00a7d0ceb3f">http://192.168.0.2:8080/opt/out/Ticket/1193</url>
    <url replyId="5d188007-5edf-4cdf-af34-c0b9a6eb94af">http://192.168.0.2:8080/opt/out/Ticket/1194</url>
    <url replyId="eafbdfaf-2e3c-41b3-84ae-f30241018174">http://192.168.0.2:8080/opt/out/Ticket/1195</url>
    <url replyId="7b5d5546-c574-4946-b8e0-ee6da891ff9d">http://192.168.0.2:8080/opt/out/Ticket/1196</url>
    <ver>1</ver>
    </A>

    Мне нужно например найти 5d188007-5edf-4cdf-af34-c0b9a6eb94af, если я нашел то взять его значение в тексте http://192.168.0.2:8080/opt/out/Ticket/1194 - сохранить в переменную.

    Код:
    ЧтениеСписка = Новый ЧтениеXML;
    ЧтениеСписка.ОткрытьФайл(РабочаяПапка + "spisok.xml");
     
       Пока ЧтениеСписка.Прочитать() Цикл
         Если ЧтениеСписка.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
         Пока ЧтениеСписка.ПрочитатьАтрибут() Цикл
             Если IDЗапросШК = ЧтениеСписка.Значение Тогда
                 Сообщить(IDЗапросШК + " нашли"); 
       //я его успешно нахожу, а вот как взять значение его текста
             КонецЕсли;
           КонецЦикла;
          КонецЕсли;
      КонецЦикла;
  2. skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    206
    Симпатии:
    3
    Баллы:
    29
    ЧтениеСписка.ЗначениеАтрибута() не подойдет?
  3. TopicStarter Overlay
    kisol
    Online

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    395
    Симпатии:
    41
    Баллы:
    54
    Не подходит, так как это не атрибут, а текст.
    Вот что выходит
    ЧтениеСписка.ЗначениеАтрибута(0) = 5d188007-5edf-4cdf-af34-c0b9a6eb94af
  4. TopicStarter Overlay
    kisol
    Online

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    395
    Симпатии:
    41
    Баллы:
    54
    Мое решение:
    Код:
    ФлагНайдено = Ложь;   
        Пока ЧтениеСписка.Прочитать() Цикл
            Если ЧтениеСписка.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                Пока ЧтениеСписка.ПрочитатьАтрибут() Цикл
                    Если IDЗапросШК = ЧтениеСписка.Значение Тогда
                        ФлагНайдено = Истина;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
            Если ЧтениеСписка.ТипУзла = ТипУзлаXML.Текст и ФлагНайдено Тогда
                ПутьКХмлЗапрос = ЧтениеСписка.Значение;
                ФлагНайдено = Ложь;
            КонецЕсли;
        КонецЦикла;
    
  5. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    как вариант "курить" xpath'ы

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