За последние 24 часа нас посетили 23557 программистов и 1664 робота. Сейчас ищут 836 программистов ...

simplexml_load_file не могу вывести элементы

Тема в разделе "PHP для новичков", создана пользователем etalcom, 30 май 2012.

  1. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Вообщем есть xml файл не я его структуру создаю
    Код (Text):
    1.  
    2. <Code_List xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.mikado-parts.ru/WS/Service">
    3.     <Code_Search>5288</Code_Search>
    4.         <List>
    5.             <Code_List_Row>
    6.                 <ZakazCode>xgts-5288</ZakazCode>
    7.                 <Supplier>Gates</Supplier>
    8.                 <ProducerBrand>GATES</ProducerBrand>
    9.                 <ProducerCode>5288</ProducerCode>
    10.                 <Brand>GATES</Brand>
    11.                 <Country>USA</Country>
    12.                 <Name>Ремень ГРМ PowerGrip</Name>
    13.                 <Price>5.34</Price>
    14.                 <PriceRUR>221.59</PriceRUR>
    15.                 <Srock>?</Srock>
    16.                 <CodeType>Aftermarket</CodeType>
    17.                     <Source>
    18.                     <SourceProducer>GATES</SourceProducer>
    19.                     <SourceCode>5288</SourceCode>
    20.                     </Source>
    21.                 <PrefixLength>5</PrefixLength>
    22.             </Code_List_Row>
    23.         </List>
    24. </Code_List>
    делаю обработку данного xml кодом
    Код (Text):
    1.  
    2. $xmlfiles = "prime.xml";
    3.  
    4.         $xml3 =  simplexml_load_file($xmlfiles);
    5.        
    6.         foreach ($xml3->xpath('/Code_List/List/Code_List_Row') as $item)
    7.         {
    8.             echo $item->ZakazCode."<br>";
    9.         }
    и ни чего не получается
    делаю просто принт р выводит всю структуру документа,
    пытаюсь вывести что то конкретное не чего не выводит!
    Наведите на мысль почему так?
    Но уже за все время решения данной проблемы я понял что проблема в строчке
    Код (Text):
    1.  
    2. <Code_List xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.mikado-parts.ru/WS/Service">
    так как я если сохраняю документ сам в ручную и делаю просто
    Код (Text):
    1.  
    2. <Code_List>
    то все получается вывести отдельно
     
  2. Easy

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

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Код (Text):
    1. $xml3 =  simplexml_load_file($xmlfiles);
    2.  
    3. $namespaces = $xml3->getDocNamespaces();
    4. $xml3->registerXPathNamespace('__empty_ns', $namespaces['']);
    5.  
    6. foreach ($xml3->xpath('//__empty_ns:Code_List_Row') as $item)
     
  3. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Спасибо огромное!
    Тока мне не очень понятно что за алгоритм сейчас.
    То есть последовательно действий до foreach
    Если не сложно то можно объяснить?
     
  4. Easy

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

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    У Вас в xml есть namespace у которого нет части после двоеточия.
    Код (Text):
    1. xmlns="http://www.mikado-parts.ru/WS/Service"
    Функция
    Код (Text):
    1. $namespaces = $xml3->getDocNamespaces();
    Вернёт все неймспейсы документа.
    У этого неймспейса ключ массива будет просто '' - пустота:)
    дальше создаётся префикс для следующего запроса xpatch и в нем используется.
     
  5. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    А все спасибо огромное Вам!Я просто с xml недавно работаю!
     
  6. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    А вот такой еще вопрос возник, точнее быть проблема
    На локалке все заработало идеально все вывел что надо все обработал, залил на сам хост
    возникла проблема simplexml_load_file как то интересно обработал xml
    делаю принт р вывел не весь файл а тока первый тег и значение его!
    что может быть такое с ним?
     
  7. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Попробуй открыть файл допустим через file(); то же самое?
     
  8. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    счас попробую

    Добавлено спустя 2 минуты 5 секунд:
    Array ( [0] => [1] => [2] => 5288 [3] => [4] => )
    вывел опять же начало тока документа
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну значить файл такой...

    На пр. я видел RSS ленту которая отображалась всегда правильно, но у xml не было конца.

    А можешь как-то проверить что нужный файл правильный?
     
  10. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    если я просто открываю файл браузером то он целый
    могу дать код
    Код (Text):
    1.  
    2. $xml = "http://mikado-parts.ru/ws/service.asmx/Code_Search?Search_Code=5288&ClientID=38&Password=etka";
    3. $xmlmikado =  simplexml_load_file($xml);
    4. print_r ($xmlmikado);
    этот код на локальном хостинге мне выдает все хорошо!
    а вот на хостинг тока самое начало

    Добавлено спустя 13 минут 2 секунды:
    пока что тема закрыта вроде как нашел решение отпишу как полностью разберусь!