Извлечь некоторые CDATA из XML-файла с помощью PHP - PullRequest
0 голосов
/ 06 мая 2019

Я должен извлечь некоторые данные из XML-файла.В этом файле есть некоторые теги, которые содержат содержимое CDATA, и я не пытаюсь извлечь это содержимое.

Файл выглядит так:

<treeplat>
<ad>
<id>965192-VR</id>
<region>VT</region>
<description>
<![CDATA[
Orte scalo. Vicinissimo alla stazione, in zona tranquilla e panoramica, proponiamo appartamento di recente costruzione così composto: ingresso, salone con ampio angolo cottura e balcone, disimpegno, camera matrimoniale con balcone, cantina e posto auto.
]]>
</description>
<pictures>
<picture>
<picture_url>
<![CDATA[
http://www.immobile.net/media/foto/1440/9f352078-885d-4281-a36d-1d22b3cbdcd9-x.jpg
]]>
</picture_url>
</picture>
<picture>
<picture_url>
<![CDATA[
http://www.immobile.net/media/foto/1440/992a5c0f-62dd-48f2-8c41-9b8ee9e06ca9-x.jpg
]]>
</picture_url>
</picture>
<picture>
<picture_url>
<![CDATA[
http://www.immobile.net/media/foto/1440/a61b4705-ed0a-494b-86fc-e92bb4c916e7-x.jpg
]]>
</picture_url>
</picture>
<picture>
<picture_url>
<![CDATA[
http://www.immobile.net/media/foto/1440/d1817d53-51fa-43dc-baf9-d3457963e694-x.jpg
]]>
</picture_url>
</picture>
<picture>
<picture_url>
<![CDATA[
http://www.immobile.net/media/foto/1440/8299cd3e-f253-4c83-9629-fb77131a2efb-x.jpg
]]>
</picture_url>
</picture>
</pictures>
</ad>
</treeplat>

Я анализирую XML-файл в этомпуть:

$xml = simplexml_load_file(storage_path('app'.DIRECTORY_SEPARATOR.'public'.DIRECTORY_SEPARATOR.$percorso_file.'test.xml')); 
foreach ($xml->ad as $immobile) {
...
}

Моя проблема - тег.Я пытаюсь извлечь первое только с помощью этого кода:

$picture_url_1 = (string)$immobile->pictures->picture->picture_url

, но я не пытаюсь извлечь все picture_url.

Как я могу разобрать все теги картинок?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Вы перебираете неправильную переменную. что вам нужно:

$pictures = $xml->ad->pictures->picture;
foreach ($pictures as $picture) {
    echo $picture->picture_url;
}

(вы можете заменить echo на любую нужную вам команду)

0 голосов
/ 06 мая 2019

Гилад почти это имел!

$pictures = $xmlData->ad->pictures;
foreach($pictures as $picture)
{
   foreach($picture as $pic)
   {
      echo (string) $pic->picture_url;
   }
}

https://3v4l.org/990NR

...