За последние 24 часа нас посетили 53917 программистов и 1720 роботов. Сейчас ищут 820 программистов ...

Не работает Simple XML

Тема в разделе "Прочие вопросы по PHP", создана пользователем False_True, 7 сен 2015.

  1. False_True

    False_True Новичок

    С нами с:
    7 сен 2015
    Сообщения:
    37
    Симпатии:
    0
    Кодить на PHP стал пару дней назад, до этого писал на С++. Хочу сделать ридер на ООП, данные загружаются в переменную start_load, но что дальше происходит мне не ведомо, поскольку сделать трасировку как в средствах С++ нет возможности. Прошу помогите разобрать.

    Код (PHP):
    1. <?php
    2. class BlogRss
    3. {
    4.     var $it_title;
    5.     var $it_link;
    6.     var $it_desc;
    7.     var $it_text;
    8.     var $it_image;
    9.     var $it_date;
    10.     var $it_cat;
    11.     var $it_tag;
    12. }
    13. class BlogConst
    14. {
    15.     var $posts = array();
    16.     function __construct ()
    17.     {
    18.         $start_load = simplexml_load_file($_POST["load_name"], NULL, TRUE);
    19.             foreach ($start_load->channel->item as $item)
    20.             {
    21.                 $post = new BlogRss();
    22.                 $post->it_title = (string) $item->title;
    23.                 $post->it_link   = (string)$item->link;
    24.                 $post->it_desc  = (string) $item->description;
    25.                 $post->it_text = (string) $item->fulltext;
    26.                 $post->it_image  = (string) $item->image;
    27.                 $post->it_date  = (string) $item->pubDate;
    28.                 $post->it_cat = (string) $item->category;
    29.                 $post->it_tag  = (string) $item->tags;
    30.  
    31.                 $this->posts[] = $post;
    32.             }
    33.         }
    34. }
    35.  
    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <title>Добавить ленту</title>
    6. </head>
    7. <body>
    8. <p>Для того чтобы добавить вставте адресс в поле и нажмите "Готово"</p>
    9. <form action="http://....../xml_engine/operator.php" method="POST">
    10.     <input name="load_name" type="url" value=""></br>
    11.     <input type="submit" value="Готово"></br>
    12. </form>
    13. </body>
    14. </html> 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Возможность есть. Есть XDebug, и работу с ним поддерживают все нормальные IDE, начиная с бесплатного NetBeans. Но можно и без него - расставлять где надо die (вместо точек останова) и var_export (вместо окна Watch)
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. False_True

    False_True Новичок

    С нами с:
    7 сен 2015
    Сообщения:
    37
    Симпатии:
    0
    RSS 2.0 (международный стандарт для синдикации веб-контента). http://k.img.com.ua/rss/ru/events.xml

    это ссылка из формы на обработчик.
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Тег с неймспейсом orgsource:tags
    Код (PHP):
    1. $post->it_tag  = (string) $item->tags; 
    нужно читать по-другому. А в остальном должен работать.
     
  6. False_True

    False_True Новичок

    С нами с:
    7 сен 2015
    Сообщения:
    37
    Симпатии:
    0
    Спасибо.

    Ругает
    Код (PHP):
    1. foreach ($start_load-> channel-> item as $item) 
    именно channel мол нет такого объекта, еще если можно подскажите как вывести эту чертовщину, пробовал через ретурн, не удалось возможно в корне неправильно его применил.
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    в браузер так
    Код (PHP):
    1. echo 'it_title: ', $post->it_title;
    За что? По-другому нужно читать тег с неймспейсом orgsource, который определен в начале документа xmlns:eek:rgsource="http://purl.org/dc/elements/1.1/", так:
    Код (PHP):
    1. //$post->it_tag = (string) $item->tags;//вместо этого
    2. $children = $item->children('http://purl.org/dc/elements/1.1/');
    3. $post->it_tag = (string) $children->tags;
    Ну может, не распарсился документ. Может, в $_POST["load_name"] нет правильного адреса. У меня работает.
     
  8. False_True

    False_True Новичок

    С нами с:
    7 сен 2015
    Сообщения:
    37
    Симпатии:
    0
    Это удел редактора, пробовал вносить эти данные в простые переменные все работает