PHP парсинг кривого xml
Есть такой вывод, через print_r выглядит так:
<response >
<ISSipExtensions><ISSipExtension>
<ISVoiceRegDNID>43</ISVoiceRegDNID>
</ISSipExtension>
</ISSipExtensions>
</response>
</axl>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Подскажите как просто и быстро достать в данном случае 43
Еще один пример кривого вывода, тут надо доставать 0:
<response xsi:type="ISexecCLIResponse" >
<ISexecCLIResponse>0</ISexecCLIResponse>
<ISexecCLIError></ISexecCLIError>
</response>
</axl>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответы (1 шт):
Автор решения: John Dow
→ Ссылка
Получилось конечно топорно, буду рад, если кто то покажет как можно это было решить не так прямолинейно
$clean_xml = str_ireplace(['</axl>', '</SOAP-ENV:Body>', '</SOAP-ENV:Envelope>'], '', $response);
$xml = simplexml_load_string($clean_xml);
$ISVoiceRegDNID = $xml->ISSipExtensions->ISSipExtension->ISVoiceRegDNID;
echo $ISVoiceRegDNID;
43
Во втором случае мне мешает <response xsi:type="ISexecCLIResponse">, просто добавил еще один параметр в замену:
$clean_xml = str_ireplace(['</axl>', '</SOAP-ENV:Body>', '</SOAP-ENV:Envelope>', 'xsi:'], '', $response);