Критическая функция в скрипте PHP. Я отлаживаю два атрибута get из XML-файла на внешнем сайте. Атрибуты помечены как «code» и «locationCode» в теге Channel. Проблема в том, что иногда locationCode отправляется как пустая строка ('') или вообще не определен сайтом для каналов, которые я не могу использовать, поэтому мне нужно прокручивать каналы до тех пор, пока не найду строку непустого locationCode. Для этого я создал цикл while, но моя текущая реализация не прошла успешно через коды местоположения. Есть ли лучший способ реализовать это?Проверка пустых атрибутов при анализе XML-файла
Текущий код:
public function setChannelAndLocation(){
$channelUrl="http://service.iris.edu/fdsnws/station/1/query?net=".$this->nearestNetworkCode.
"&sta=".$this->nearestStationCode."&starttime=2013-06-07T01:00:00&endtime=".$this->impulseDate.
"&level=channel&format=xml&nodata=404";
$channelXml= file_get_contents($channelUrl);
$channel_table = new SimpleXMLElement($channelXml);
$this->channelUrlTest=$channelUrl;
//FIXME: Check for empty locationCode string
$this->channelCode = $channel_table->Network->Station->Channel[0]['code'];
$this->locationCode = $channel_table->Network->Station->Channel[0]['locationCode'];
$i = 1;
while($this->locationCode=''){
$this->channelCode = $channel_table->Network->Station->Channel[$i]['code'];
$this->locationCode = $channel_table->Network->Station->Channel[$i]['locationCode'];
$i++;
}
}
пример XML-файл для кода: http://service.iris.edu/fdsnws/station/1/query?net=PS&sta=BAG&starttime=2013-06-07T01:00:00&endtime=2013-10-12T18:47:09.5000&level=channel&format=xml&nodata=404
[ '$ locationCode = $ channel_table-> xpath ('// Channel/@ locationCode [.! = ""]'); '] (http://php.net/manual/en/simplexmlelement.xpath.php) – Wrikken
Или, тамподы там, поэтому ['$ channel_table-> -> registerXPathNamespace ('default', 'http: //www.fdsn.org/xml/station/1'); $ locationCode = $ channel_table-> xpath ('// default: Channel/@ locationCode [.! = ""] '); '] (http://php.net/manual/en/simplexmlelement.xpath.php) – Wrikken