За последние 24 часа нас посетили 21923 программиста и 1332 робота. Сейчас ищут 423 программиста ...

Почему не отрабатывает getElementsByTagName?

Тема в разделе "PHP для профи", создана пользователем VaneS, 2 апр 2021.

  1. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Добрый день!
    Работаю с API сервиса nalog.ru
    ко мне приходит такой вот результат:
    HTML:
    1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    2.     <soap:Body>
    3.         <GetMessageResponse xmlns="urn://x-artefacts-gnivc-ru/inplat/servin/OpenApiAsyncMessageConsumerService/types/1.0">
    4.             <ProcessingStatus>COMPLETED</ProcessingStatus>
    5.             <Message>
    6.                 <GetTicketResponse xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn://x-artefacts-gnivc-ru/ais3/kkt/KktTicketService/types/1.0">
    7.                     <Result>
    8.                         <Code>200</Code>
    9.                         <Ticket>321321</Ticket>
    10.                     </Result>
    11.                 </GetTicketResponse>
    12.             </Message>
    13.         </GetMessageResponse>
    14.     </soap:Body>
    15. </soap:Envelope>
    Далее я пишу вот такой код:
    PHP:
    1. $dom = new DOMDocument();
    2. $dom->loadXML($response);
    3. foreach($dom->getElementsByTagName('Code') as $element ){
    4.       $code = $element->nodeValue;
    5. }
    Почему то в результате переменная $code у меня пустая, почему то getElementsByTagName не находит элемент. Хотя он явно там есть. Что я делаю не так?
    Меня смущает то что ранее это работало!
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    А с чем оно ранее работало?
    Приведите пример xml.
     
  3. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Я говорю что ранее этот код работал! getElementsByTagName нормально отрабатывал! А теперь нет. Хотя структура совсем не поменялась! xml я привел выше
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Оно и сейчас работает.
     
  5. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    На сервере не отрабатывает, в чем может быть проблема?
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Какая кодировка по умолчанию на сервере?
    В какой кодировке скрипт?
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.764
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. var_dump ( $dom->getElementsByTagName('Code') );
     
  8. Alexsmes

    Alexsmes Новичок

    С нами с:
    7 июн 2020
    Сообщения:
    1
    Симпатии:
    0
    Вы используете цикл с постусловием, а это означает, что в отличие от цикла с предусловием while, этот цикл проверяет значение выражения не до, а после каждого прохода итерации.

    Т.е. Вы сначала выводите на экран, а только потом проверяете есть ли значение в переменной.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.764
    Симпатии:
    1.322
    Адрес:
    Лень
    @Alexsmes, что ты сейчас ... ? o_O

    foreach ( [] AS $item ) { echo 1; }
     
  10. TWC

    TWC Новичок

    С нами с:
    26 май 2022
    Сообщения:
    4
    Симпатии:
    0
  11. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Не пробовали сделать допущение, что с объявой что-то не то?
    Может предлагаемая оплата не соответствует запросам квалификации.
    Или в вашем регионе таких безработных специалистов уже нет.
    Попробуйте поиграть шрифтами и запросами