2015-01-12 2 views
1

У меня есть XML, который выглядит следующим образом:PHP - граф XML дочерних узлов

<?xml version="1.0" encoding="UTF-8"?> 
<apiresponse> 
    <response> 
    <services> 
     <service> 
     <Carrier>Carrier1</Carrier> 
     </service> 
     <service> 
     <Carrier>Carrier2</Carrier> 
     </service> 
     <service> 
     <Carrier>Carrier3</Carrier> 
     </service> 
     <service> 
     <Carrier>Carrier4</Carrier> 
     </service> 
    </services> 
    </response> 
</apiresponse> 

Это хранится в переменной $ результат.

Я хочу рассчитать количество узлов в пределах услуг. Как это сделать, если узел служб не имеет имени или идентификатора?

Я попытался следующие, но это не сработало:

$xml = new SimpleXMLElement($result); 
echo count($xml->services); 

Спасибо!

+0

нет никакого '' в верхней части XML. это будет '$ xml-> response-> services' –

ответ

1

вы можете просто использовать это:

echo $xml->response->services->service->count(); 

или использовать цикл:

$xml = new SimpleXMLElement($result); 

foreach ($xml as $services) { 
    foreach($services as $service) { 
     echo "<pre>"; 
     print_r($service->count()); 
     echo "</pre>"; 
    } 
} 
+0

Это отлично работает! Если бы я хотел пропустить каждую службу и захватить значение Carrier, как бы отредактировать ваш цикл? Я не могу об этом разглядеть - Спасибо! – Lee

+0

другой Foreach в цикл услуг: 'Еогеасп ($ XML в $ услуги) { Foreach (услуги $ как $ службы) { Еогеасп ($ служба в $ перевозчика) { эхо $> Carrier операторского. '
'; } } } ' – goldlife

+0

Отлично! Благодаря! – Lee

Смежные вопросы