прочитать и обновить значение XML для соответствия значения

Я пытаюсь обновить файл XML, если переданное значение соответствует родительскому значению. Обычно один раз в минуту проверяется серия IP-адресов, и результат передается моему php-скрипту следующим образом: http://ipaddress/presence.php?ip=192.168.0.55&present=1,

XML (sence.xml):

<?xml version="1.0" encoding="UTF-8"?>
<Presence>
<Person IP="192.168.0.55">
<Name>Bob</Name>
<Present>1</Present>
<LastSeen>14/09/2014 01:48:43 pm</LastSeen>
</Person>
<Person IP="192.168.0.56">
<Name>John</Name>
<Present>0</Present>
<LastSeen>13/09/2014 08:32:19 pm</LastSeen>
</Person>
</Presence>

PHP (sence.php):

<?php

$ip = $_REQUEST['ip'];
$present = $_REQUEST['present'];

// Write latest data to XML file
$Presence = simplexml_load_file('presence.xml');
foreach ($Presence->xpath('//Person') as $Person) {
if ($Person[@IP] == $ip) {
$Person->Present = $present;
}
else {}

}

?>

Код выше, я надеялся, обновит <Present> тег со значением, переданным в URL. Пока ничего не происходит, я не получаю никаких ошибок в файле журнала. У меня действительно было значение $ present внутри оператора IF, написанное в неправильном регистре изначально, которое выдало ошибку относительно неопределенной переменной, которая указала, что код работает так же, как оператор IF.

Любая помощь приветствуется, я смотрел на различные вопросы & Как и в Stackoverflow, и я так далеко, но не могу понять. Надеюсь, что после устранения этого препятствия я смогу добавить код для обновления <LastSeen> тег в XML.

0

Решение

URL должен быть правильно отформатирован (замените $ на &):

http://ipaddress/presence.php?ip=192.168.0.55&present=1

редактировать
Убедитесь, что вы сохранили его после внесения изменений

$Presence->asXML('presence.xml');
0

Другие решения

Пытаться:

foreach ($Presence->Person as $Person) {
if ($Person->attributes()->IP == $ip) {
$Person->Present = $present;
}
}

Кроме того, убедитесь, что вы на самом деле получаете строку XML (в том формате, который вы опубликовали), на случай, если ваш ввод не совсем такой, как вы ожидаете.

0