Разбор XML с использованием PHP XML Expat Parser - PullRequest
0 голосов
/ 13 апреля 2020

Позвольте мне предвосхитить это, я НЕ PHP человек. Мой офис недавно потерял доступ к нашим разработчикам из-за блокировки второстепенных сервисов, и мне нужна помощь. У меня есть RSS-канал, созданный нашей CMS, который анализируется PHP. Выходные данные PHP затем генерируются в HTML с помощью jQuery. Я обнаружил, что если пользователь CMS забывает заполнить части нашего генератора RSS-каналов, наш анализатор (или jQuery) не может обрабатывать нулевые значения. Мне нужна помощь в выяснении того, как защитить поля от ошибок, подставив некоторые значения по умолчанию, если поля в XML равны нулю. Например, если пользователь забывает ввести изображение, вместо него будет подставлено значение по умолчанию «image.png», или если он забудет категорию, укажите «Категория не указана». появляются.

Я нашел метод - PHP XML Expat Parser, но я не знаю, как (и где) вставить его в мой код. Если бы кто-то мог начать меня с некоторого кода, я думаю, что я мог бы сделать остальные поля. ИЛИ любая помощь, которую вы можете предоставить, будет принята.

          <?php

header('Content-Type: application/json');

        //Step 1: process the parameters

        $url   = $_REQUEST['sUrl'];
        $year  = $_REQUEST['getYear'];
        $limit = $_REQUEST['limit'];

        if ($limit == 0) {
           $limit = 1000;
        }

        //Step 2: declare the item class for RSS item array

        class Item
        {
           public $title;
           public $link;
           public $description;
           public $pubDate;
           public $category;
           public $ImgLink;

        }

        //step 3: load the RSS feed into an XML document

        $rss     = simplexml_load_file($url);

        //step 4: initialize the item counter and the item array.

        $items   = 0;
        $outlist = array();

        //step 5: load the RSS item array

        foreach ($rss->channel->item as $item)   {

           //The following lines will format the pubDate into a form
           //that is more amenable for display on web pages.
           //Format example: August 14, 2019

           $date    = date_create($item->pubDate);
           $yr      = date('Y', strtotime($item->pubDate));
           $pubDate = date_format( $date,"F d, Y");

            //The item only gets loaded into the array if the year matches the
            //selected year, and if the array item count has not been reached.

            if ($yr == $year && $items < $limit) {

              //First, a new Item is instantiated based on the class declaration
              //Then we populate the properties with those of the selected item.


               $myItem = new Item();

               $myItem->title       = $item->title;
               $myItem->link        = $item->link;
               $myItem->description = $item->description;
               $myItem->pubDate     = $pubDate;
               $myItem->category    = $item->category;
               $myItem->ImgLink = $item->children('media', True)->content->attributes()->url;


               array_push($outlist,$myItem);

               //increment the item array counter

               $items = $items + 1;
            }
       }
       //step 6: encode the outbound array into JSON format

       $encodedList = json_encode($outlist);

       //final step: return the JSON-encoded array.

       echo $encodedList;

?>
...