hi zusammen,
ich habe nen kleines Prob mit der xpath() Funktion von SimpleXML.
HTML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<container>
<texte>
<text user="user1">llllasdfasdfeorpqi</text>
<text user="user2">oouzzrrzreorpqi</text>
</texte>
</container>
So jetzt wuerde ich gerne über xpath den text von user1 ändern :
PHP-Code:
<?php
$xml = simplexml_load_file('dateimitobigemxml.xml');
// Jedes ergebnis von der Xpath anfrage wird in dem Array $result als
// Referenz gespeichert. Also $result[0] ist eine Referenz auf $xml->texte->text[0];
$result = $xml->xpath('/texte/text [@user="user1"]');
// $result[0] will ich verändern:
$result[0]['user'] = 'ehemalsUser1'; // Attribute aendern geht
$result[0] = 'neuertext'; // Inahlt ändern funktioniert nicht
echo $xml->asXML(); // Siehe ersten unteren XML-Code
// Das ganze ohne xpath():
$xml->texte->text[0] = 'zweiterneuerText'; // Funktioniert auch
echo $xml->asXML(); // Siehe zweiten unteren XML-Code
?>
Erste Ausgabe:
HTML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<container>
<texte>
<text user="ehemalsUser1">llllasdfasdfeorpqi</text>
<text user="user2">oouzzrrzreorpqi</text>
</texte>
</container>
Zweite XML Ausgabe:
HTML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<container>
<texte>
<text user="ehemalsUser1">zweiterneuerText</text>
<text user="user2">oouzzrrzreorpqi</text>
</texte>
</container>
Wie es scheint, wird $result[0] zu einem string umgewandelt und nicht wie ein richtiges SimpleXMLObject behandelt.
Oder mach ich irgendetwas falsch?
Gruss
senfmensch
Lesezeichen