Я разбору и XML файл со списком зданий недвижимости. Все становится хорошо, я могу взять каждый узел и создать отдельный пост Wordpress с пользовательской информацией. Проблема в том, что я пытаюсь получить доступ к узлу изображений: в каждом здании есть узел изображения с несколькими изображениями в нем. Это то, что я делаю:
XML СТРУКТУРА
<annunci>
<annuncio ..blablabla ...>
...some stuff...
<immagine categoria="PLANIMETRIE" didascalia="img_5862" tipo="foto">659-{23d7ac25-549e-40ef-9cb2-1e6f687182ec}_0.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5864" tipo="foto">659-{8b9c3da4-edde-489a-8ca9-3dc91a0c5063}_1.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5868" tipo="foto">659-{57790b4a-2482-4a66-8f7f-1a11765d1cab}_2.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5870" tipo="foto">659-{b28b62f7-6375-4592-a269-c4ac8eac6087}_3.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5871" tipo="foto">659-{0bf70101-b0ec-4835-9a06-3b916ad21241}_4.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5872" tipo="foto">659-{dc5f87a1-364a-4c05-9a3a-be4cb51016f9}_5.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5875" tipo="foto">659-{2fe1524d-b454-423c-90bf-a6f9fff17e8d}_6.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5876" tipo="foto">659-{1060d120-b339-4bab-89cd-6b7781143a74}_7.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="img_5882" tipo="foto">659-{191c77d7-76f5-4fb9-873c-9221f755dcba}_8.jpg</immagine>
<immagine categoria="PLANIMETRIE" didascalia="planimetria" tipo="foto">659-{14a9a6f0-dbf5-48a2-a204-976b9a146f43}_9.jpeg</immagine>
...some other stuff ...
</annuncio>
</annunci>
И это код, который я использую в своем плагине:
if (!$xml = simplexml_load_file($xml_path)) {
echo 'unable to load XML file';
} else {
...
foreach ($xml->annuncio as $annuncio) {
...
$immagini = (array)$annuncio->immagine;
...
echo '<pre>'; //THIS IS FOR DEBUGGING
print_r($immagini);
echo '</pre>';
}
И я получаю такой массив, по одному для каждого здания, которое я разбираю:
Array
(
[@attributes] => Array
(
[categoria] => PLANIMETRIE
[didascalia] => img_5862
[tipo] => foto
)
[0] => 659-{23d7ac25-549e-40ef-9cb2-1e6f687182ec}_0.jpg
[1] => 659-{8b9c3da4-edde-489a-8ca9-3dc91a0c5063}_1.jpg
[2] => 659-{57790b4a-2482-4a66-8f7f-1a11765d1cab}_2.jpg
[3] => 659-{b28b62f7-6375-4592-a269-c4ac8eac6087}_3.jpg
[4] => 659-{0bf70101-b0ec-4835-9a06-3b916ad21241}_4.jpg
[5] => 659-{dc5f87a1-364a-4c05-9a3a-be4cb51016f9}_5.jpg
[6] => 659-{2fe1524d-b454-423c-90bf-a6f9fff17e8d}_6.jpg
[7] => 659-{1060d120-b339-4bab-89cd-6b7781143a74}_7.jpg
[8] => 659-{191c77d7-76f5-4fb9-873c-9221f755dcba}_8.jpg
[9] => 659-{14a9a6f0-dbf5-48a2-a204-976b9a146f43}_9.jpeg
)
Прежде всего, я не могу избавиться от атрибута, и всегда получаю сообщение об ошибке при попытке доступа к одиночным изображениям, например
echo $immagini[0];
Я уверен, что это что-то глупое, но я не могу найти решение, может кто-нибудь мне помочь?
EDIT 1 Извините, ошибка в том, что я пытаюсь получить доступ к одиночным изображениям в цикле:
foreach($immagini as $test) {
echo $test;
}
Я получил уведомление: массив для преобразования строк в...
EDIT 2 Я решил с циклом FOR, но все равно не понимаю: D В любом случае, это работает!
Мужчина,
Надеюсь, что у вас будет лучший опыт работы с DOMDocument, а затем с SimpleXML.
При работе со сложными XML-данными решение может быть не просто "простым", тогда вы не можете использовать SimpleXML для этого.
Работая с DOMDocument, я решаю сложные проблемы с бронированием билетов для авиакомпаний, использующих DOMDocument.
<?php
$dom = new DOMDocument();
$dom->loadXML('/path/to/xml.xml');
foreach ($dom->getElementsByTagName('annuncio') as $annuncio){
foreach ($annuncio->getElementsByTagName('immagine') as $immagine){
$categoria = $immagine->getAttribute('categoria');
}
}
?>
Наслаждайтесь DOM!