есть xlm (точнее его часть): <SubAdministrativeArea> <SubAdministrativeAreaName>Полесский район</SubAdministrativeAreaName> <Locality> <LocalityName>Полесск</LocalityName> <Premise> <PremiseName>станция Полесск</PremiseName> </Premise> </Locality> </SubAdministrativeArea> Как средствами PHP проверить является ли LocalityName единственным элементом в Locality, или имеется еще и Premise (или какие либо еще элементы кроме LocalityName (могут быть еще и другие)). Спасибо за предложенные варианты.
Код (PHP): $xml = '<SubAdministrativeArea> <SubAdministrativeAreaName>Полесский район</SubAdministrativeAreaName> <Locality> <LocalityName>Полесск</LocalityName> <Premise> <PremiseName>станция Полесск</PremiseName> </Premise> </Locality> </SubAdministrativeArea>'; $xml = simplexml_load_string($xml); if (isset($xml->Locality->LocalityName) && $xml->Locality->children()->count()==1) { echo 'LocalityName единственный потомок в Locality'; } else { echo 'LocalityName НЕ единственный потомок в Locality'; }
runcore друг, спасибо! $xml->Locality->children()->count()==1 это то что надо, не мог это найти! Остальное делал так же за исключением: isset($xml->Locality->LocalityName) Условие существования LocalityName я проверял просто if($xml->Locality->LocalityName) и вроде тоже работает. if(isset($xml->Locality->LocalityName)) и if($xml->Locality->LocalityName) это не одно и тоже?
Технически нет. Но одно и то же в плане результата, в случае, если существует Localty. Если же Localty нет, то решение с isset продолжит работать, в то время как решение без оного, должно упасть. Кроме того, решение без isset может дать, в данном случае, ложный результат за счет динамической типизации содержимого LocalityName.