Since this is XML you may want to consider using PHP's Dom class (not
Dom XML) to do the updating.
Assuming you have this file: book.xml
<sample>
<exo id="1" value="Test" />
<exo id="2" value="Test2" />
</sample>
This example code will search for all the tags with 'exo' and change
the one whose id=='1'. It will then write back the file.
<?php
$dom=new DOMDocument();
$dom->load('book.xml');
$dom->formatOutput = true;
echo $dom->saveXML(); // show before file
$allnodes = $dom->getElementsByTagName('exo');
foreach ($allnodes as $node) {
if ($node->nodeName=='exo' and $node->getAttribute('id')=='1') {
$val=$node->getAttribute('value') . ' updated';
$node->setAttribute ( 'value', $val );
}
}
echo $dom->saveXML(); //show after file
$dom->save('book.xml');
exit;
?>
jh****@gmail.com wrote:
ok, it's works...
thanks for your help.
Noodle wrote:
You will have to read the whole file to perform this task, but if your
using PHP5 this can be done in 1 step, using the get
file_get_contents() method to read the xml document into a string.
The following code will make the value change, and it isn't much
trouble to do...
<?php
# Set Values
$my_file = 'myfile.xml';
$new_value = 'Test updated';
# Get file contents
$xml = file_get_contents($my_file);
# Regex
$xml = preg_replace('<exo id="(.*)" value="(.*)" />', "exo id=\"$1\"
value=\"$new_value\" /", $xml);
# Write file out again
file_put_contents($my_file, $xml);
?>
jh****@gmail.com wrote:
Hi all
>
can I update a xml node AND write the new value in a file witout
re-write all the file ?
>
sample :
>
my xml file :
>
<sample>
<exo id="1" value="Test" />
</sample>
>
i want to modify the file like
>
<sample>
<exo id="1" value="Test updated" />
</sample>
>
is it possible ?