Как интегрировать ссылку для разбора в PHP Simple XML - PullRequest
0 голосов
/ 15 июня 2019

Мне нужно скачать все фотографии о поместьях из XML, чтобы сохранить на сервере.У каждого ребенка-сословия в XMl есть общий раздел со всей информацией, а затем узел с именем Foto (фотографии усадьбы) и еще один узел для планов (Planimetria).Ссылка каждого изображения структурирована следующим образом:

<Link>http://www.site.it/ImageView.ashx?id=[photoID]&reduce=1438[can be set as I want es: 1000, 960, 1080]</Link>

Мне нужно вызвать его внутри $ url_photo и $ url_plan, чтобы я мог прочитать photoID из XML и установить разрешение (1438,1000,960) с помощьюглобальная переменная.

Это мой код:

   <?php

    $xml = simplexml_load_file("Schede.xml"); // your xml
    $path = '/mnt/c/Users/Giuseppe/Desktop/FotoTest/';
    $i = 1;
    $resolution = '1000';


        // Estate Image
        foreach($xml->CR03_SCHEDE as $estate){

            //if((string) $estate['ELIMINATO'] = "NO"){

                echo "\nEstate n $i Images\n";

                foreach($estate->Foto->CR04_SCHEDE_FOTO as $photo){
                    $url_photo = (string) $photo->Link;
                    $filename_photo = basename($photo->CR04_FILENAME); // get the filename
                    if(file_exists($path . $filename_photo)) {
                        echo "file $filename_photo already exists \n";
                    } 

                    else {
                        $img_photo = file_get_contents($url_photo); // get the image from the url
                        file_put_contents($path . $filename_photo, $img_photo); // create a file and feed the image
                        echo "file $filename_photo created \n";
                    }
                }

                // Plans
                echo "\nEstate n $i plans\n";

                foreach($estate->Planimetria->CR04_SCHEDE_FOTO as $plan) {
                    $url_plan = (string) $plan->'http: // www.site.it/ImageView.ashx?id=' . $plan->ID . '&reduce=' . $resolution; //$plan->Link;
                    $filename_plan = basename($plan->CR04_FILENAME);
                    if(file_exists($path . $filename_plan)) {
                        echo "file planimetry $filename_plan already exists \n";
                    }

                    else {
                        $img_plan = file_get_contents($url_plan); // get the image from the url
                        file_put_contents($path . $filename_plan, $img_plan); // create a file and feed the image
                        echo "file planimetry $filename_plan created \n";
                    }

                }
                $i++;



/*}
            else{
                echo "$estate->attributes(Riferimento)"."Deleted\n";
            }*/
        }


    ?>

У меня также есть проблема с первым, если он прокомментирован:

if((string) $estate['ELIMINATO'] = "NO")...

Eliminato является атрибутом CR03_SCHEDEно скрипт не прочитает его и в любом случае перейдет внутрь if.Полный XML имеет около 70/80 свойств, и foreach хорошо работает для загрузки всех изображений, но мне нужно, чтобы он загружал только одно, у которого этот атрибут равен NO

Это пример XML (толькоодно поместье): ссылка

Спасибо всем

1 Ответ

0 голосов
/ 15 июня 2019

Это классическая ошибка:

if((string) $estate['ELIMINATO'] = "NO")

Вы использовали оператор присваивания вместо оператора сравнения.Пожалуйста, используйте эту точную форму:

if ('NO' == (string)$estate['ELIMINATO'])
...