Выбор элементов XML с одинаковым именем с помощью simple_load_xml в PHP - PullRequest
1 голос
/ 06 декабря 2011

У меня есть XML (упрощенный), как это:

<article>
    <title>My Article</title>
    <image src="someurl.jpg" />
    <image src="someotherurl.jpg" />
</article>

Как выбрать элементы <image>? У них одинаковое имя. Чтобы выбрать <title>, я просто делаю это:

$xml = simplexml_load_file( "theurltomyxml.xml" );
$article = $xml->article;
$title = $article->title;

Но как мне получить изображения? У них одно имя! Просто написать $article->image не сработает.

Ответы [ 2 ]

2 голосов
/ 23 июля 2012

Я знаю, что это старый вопрос / ответ, но у меня была похожая проблема, и я решил ее, используя второе решение от ajreal с несколькими собственными настройками.У меня была серия узлов верхнего уровня (xml не был правильно отформатирован и не разбивал элементы на родительские узлы - вне моего контроля).Поэтому я использовал цикл for, который подсчитывает элементы, а затем использовал решение ajreal, чтобы отобразить содержимое, которое я хотел, с итерацией $ i.

Мое использование было немного другим, чем выше, поэтому я попытался изменить егочтобы сделать его более актуальным для вашей проблемы изображений.Кто-нибудь, пожалуйста, дайте мне знать, если я сделал ошибку.

$campaigns = $xml->children();

for($i=0;$i<=$campaigns->count();$i++){
    echo $campaigns[$i]->article->title . $campaigns[$i]->article->image[0];
}
0 голосов
/ 06 декабря 2011

Вы можете сделать это: -

foreach ($xml->xpath("/article/image") as $img)
{
  ...
}

Или (это список узлов изображения, поэтому нормальный способ доступа к массиву работает)

$xml->image[0];
$xml->image[1];
...