php-скрипты получают значение узла, если оно равно заданному значению; изменение значения узла имеет один и тот же родительский узел

точно так же, как название, мне нужна помощь в php-скрипте, получает значение узла «name», если оно равно заданному заданному значению; значение «rate» значения «rate» имеет тот же «персональный» родительский узел. xml-файл «rate.xml» выглядит следующим образом:

<?xml version="1.0"?> <user> <person> <name>jessy</name> <rate>2</rate> </person> <person> <name>mice</name> <rate>5</rate> </person> </user> 

сценарий будет похож на этот

 <?php $name = $_POST['name']; $like = $_POST['like']; $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadXML(file_get_contents ('rate.xml')); $xpath = new DOMXPath($doc); $nlist = $xpath->query("//user/person/rate"); $node = $nlist->item(0); $newval = trim($node->nodeValue)-1; $node->nodeValue = $newval; file_put_contents ('rate.xml', $doc->saveXML()); ?> 

Моя недостающая часть заключается в том, как ввести условие «если», если имя равно имени, которое я передал «POST», и как ограничить это изменение узлом «rate», который появляется после этого «имени» узла с именем «POST [' ']" стоимость. реализация будет большой помощью. С уважением 🙂

Related of "php-скрипты получают значение узла, если оно равно заданному значению; изменение значения узла имеет один и тот же родительский узел"

Вы можете просто сделать это

 $name = "jessy"; $xml = '<?xml version="1.0"?> <user> <person> <name>jessy</name> <rate>2</rate> </person> <person> <name>mice</name> <rate>5</rate> </person> </user>'; $xml = new SimpleXMLElement($xml); for($i = 0; $i < count($xml->person); $i ++) { if ($xml->person[$i]->name == $name) { $xml->person[$i]->rate = $xml->person[$i]->rate - 1; } } echo $xml->asXML(); 

Вывод

 <?xml version="1.0"?> <user> <person> <name>jessy</name> <rate>1</rate> <----- Modified rate for jessy </person> <person> <name>mice</name> <rate>5</rate> </person> </user>