Проверьте, существует ли узел и проверьте его значение атрибута. - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть XML-файл с узлами и атрибутами

<hotspot name="hs1"/>
<hotspot name="hs2"/>
<hotspot name="hs3"/>

Я хотел бы проверить, существует ли точка доступа nodc и существует ли конкретное значение атрибута. Я пытаюсь это, но идентификатор не работает ...

<?php
$file = 'hotspots.xml';
$xml = simplexml_load_file($file);
$var = $xml->xpath("//hotspot[@name='hs2']");
if (isset($var)) { echo 'does exist' } else {echo 'does not exist'}
?>

Ну, это вообще не работает (ошибка 500) Извините за то, что я такой новичок, помогите высоко ценится! СПАСИБО !

1 Ответ

0 голосов
/ 08 ноября 2018

Ваши операторы echo должны заканчиваться ;

$file = 'hotspots.xml';
$xml = simplexml_load_file($file);
$var = $xml->xpath("//hotspot[@name='hs2']");
if (isset($var)) {
    echo 'does exist';
} else {
    echo 'does not exist';
}

Кроме того, тип возврата $xml->xpath является массивом, и когда выражение xpath не находит результатов, оно возвращает пустой массив.

Когда он возвращает пустой массив, isset($var) будет истинным и даст вам does exist, что неверно.

Один из вариантов может заключаться в использовании count проверить, содержит ли массив более 0 элементов:

if (count($var) > 0) {

...