Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
php4 - foreach + xml klasse [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
php4 - foreach + xml klasse


 
darki777
16-07-2007, 12:24 
 
Hi,
ich habe ein script geschrieben dass ich dringend ab php4+
brauche, nur allerdings klappt es in php5 bisweilen.
Eine Klasse hilft mir hierbei eine simpleXML ähnliche Syntax
in php4 zu handhaben, leider werden bei der Klasse
die CDATA Tags rausgeschmissen, und ich wollte das ganze
mit ner simplen Funktion umgehen, da ich sowieso überall
CDATA brauch, allerdings sind die Änderungen (bzw. das
hinzufügen von den CDATA Tags) nicht außerhalb der
foreach schleife gültig, zumindest in php4, in php5 gehts
wiederum komischerweise, kann mir jemand verraten woran
das liegt und wie ich das lösen könnte?

Mein bisheriger Testversuch:

// XML INIT
include "XMLParser.class.php";
$xml = file_get_contents('test.xml');
$parser = new XMLParser($xml);
$parser->Parse();

// XML EDIT
$parser->document->AddChild("newChild",array("attr1"=>"ab","attr2"=>"ce"),1);

// CONVERT 2 CDATA
function convert2CDATA($tagChilds)
{
foreach($tagChilds as $value)
{
$value->tagData="<![CDATA[".$value->tagData."]]>";
convert2CDATA($value->tagChildren);
}
}

convert2CDATA($parser->document->tagChildren);
echo $parser->GenerateXML();

// SAVE XML
$handle = fopen("test.xml","w+");
fwrite($handle,$parser->GenerateXML());
fclose($handle);


Merci schon mal, Gruß, darki

 
wahsaga
16-07-2007, 12:31 
 
Überlasse doch bitte das schöne Sprachkonstrukt des Schachtelsatzes Leuten, die damit halbwegs sinnvoll umgehen können.
Dem Verständnis deiner Äusserungen dürfte es förderlicher sein, wenn du etwas weniger Kommata, und dafür mehr Punkte benutzt (unter entsprechender Anpassung der Satzstruktur bitte - nein, Suchen/Ersetzen allein hilft auch nicht weiter).


Und zu deinem "bisherigen Testversuch" fehlt wieder mal jegliche sinnvolle Anmerkung und weiterführende Info.

 
darki777
16-07-2007, 12:37 
 
Was soll ich denn noch schreiben? Hab doch schon alles geschrieben, wo ich mein Problem hab, und woran es liegt ebenso, soll ich vieleicht noch die Lösung für mich selber hinschreiben?

Hier ist das Problem, wie auch schon im Satz beschrieben,
auch wenns vieleicht etwas unverständlich war:
$value->tagData="<![CDATA[".$value->tagData."]]>";

Diese Änderung wird nur in php5 akzeptiert, außerhalb
sowie innerhalb der for-schleife, bei php4 leider nur
innerhalb der for-schleife, außerhalb davon geschieht
keine Änderung.

P.S. die komma's bleiben, schließlich ist das ja kein
Deutsch-Grammatikforum ;)

Gruß darki

 
jens76
16-07-2007, 13:12 
 
P.S. die komma's bleiben, schließlich ist das ja kein
Deutsch-Grammatikforum ;)



Programmieren wollen und grammatik ablehnen?!? auch eine Programmiersprache hat ihre "grammatig"!

 
tontechniker
16-07-2007, 14:08 
 
$value->tagData="<![CDATA[".$value->tagData."]]>"; Steht doch im Code nirgendwo außerhalb der Schleife? Vielleicht versuchst du noch mal einen deutschen Satz zu formulieren so wie - "Ich versuche die Werte eines Arrays innerhalb einer foreach-Schleife zu bearbeiten. Das funktioniert nur unter PHP 5." - oder so.

 
darki777
17-07-2007, 08:55 
 
Ich versuche die Werte eines Arrays innerhalb einer foreach-Schleife zu bearbeiten. Das funktioniert nur unter PHP 5."
Ja, so meinte ich es auch, also wars doch nicht so unverständlich ;)

Steht doch im Code nirgendwo außerhalb der Schleife?
Dann würde es aber auch nicht in PHP5 gehen, wenns so wäre, eigentlich verändere ich ja den Objektinhalt, bzw. das darin enthaltende Array.

Wäre über nen kleinen Lösungsansatz dankbar.

Viele Grüße darki

 
wahsaga
17-07-2007, 09:19 
 
Original geschrieben von darki777
Wäre über nen kleinen Lösungsansatz dankbar.
Mir ist immer noch nicht wirklich klar, was denn jetzt deine Frage bzw. dein Problem ist - man kann nach wie vor nur raten ...!

Dann würde es aber auch nicht in PHP5 gehen, wenns so wäre, eigentlich verändere ich ja den Objektinhalt, bzw. das darin enthaltende Array.
Also geht es dir darum, Array-Inhalte in einer foreach-Schleife auch gleich zu verändern? Wie das geht, per Reference, steht im Manual (für PHP 4 in den Nutzekommentaren IIRC).

 
darki777
17-07-2007, 09:29 
 
Danke Wahsaga, werd ich gelegentlich mal reinschaun, habs jetzt nun mittels einer ganz normalen for schleife gelöst, foreach geht komischerweise nicht, weis der geier wieso. Zumindest mit der XMLParser Klasse in Verbindung mit der foreach + PHP4.

Danke für eure Geduld, Gruß, darki


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:47 Uhr.