#php #xml
Вопрос:
Как изменить значение атрибута XML-узла с помощью PHP? Я немного пытался, но не мог понять, вы можете мне помочь?
Я хочу изменить пароль пользователя 1.
<Users>
<User Name="user1">
<Option Name="Pass">123456</Option>
<Option Name="fname">first name</Option>
<Option Name="lname">last name</Option>
</User>
<User Name="user2">
<Option Name="Pass">123456</Option>
<Option Name="fname">first name</Option>
<Option Name="lname">last name</Option>
</User>
<Users>
Php-код:
$xmlfile = "users.xml";
$xml = simplexml_load_file($xmlfile);
$xml->asXML($xmlfile);
foreach( $xml->Users->xpath("User [@Name='user1']") as $t ) {
$t->xpath("Option[@Name='Pass']") = '654321';
}
if(!$rv = $xml->asXML($xmlfile)){
$mesaj = 'error! n ';
echo $mesaj;
} else {
echo "Password Changed.";
}
Ответ №1:
На самом деле вам не нужно foreach
, если у вас есть только один целевой пользователь. Попробуйте изменить
foreach( $xml->Users->xpath("User [@Name='user1']") as $t ) {
$t->xpath("Option[@Name='Pass']") = '654321';
}
Для
$target = $xml->xpath('//User[@Name="user1"]/Option[@Name="Pass"]')[0];
$target[0]="654321";
echo($xml->asXml());
и посмотрим, сработает ли это.
Комментарии:
1. спасибо, хорошая работа 😉
2. @flash Рад, что это сработало для вас!