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)
SimpleXML addChild() Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SimpleXML addChild() Problem


 
Skrok
12-02-2010, 10:23 
 
Hallo,

ich habe ein kleines Problem. Ich möchte einen Bestand abfragen und muss dafür folgende Struktur übermitteln:



<Products>
<Product>
<ProductID>xxx</ProductID>
</Product>
<Product>
<ProductID>xxx</ProductID>
</Product>
</Products>



Mein logisches Verständniss


$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\"?><Request></Request>");
$array = array("xxx","xxx");
$xml->AddChild("Products");
for($i=0;$i<2;$i++){
$xml->Products->AddChild("Product");
$xml->Products->Product->AddChild("ProductID",$array[$i]);
}

echo $xml->asXml();


mein XML ->


<?xml version="1.0" encoding="utf-8"?>
<Request>
<Products>
<Product>
<ProductID>6252881</ProductID>
<ProductID>6252881</ProductID>
</Product>
<Product/>
</Products>
</Request>



Irgendwie stehe ich gerade auf meinem Hirn oder so aber mir will nicht einfallen wo ich den Denkfehler drin habe.


*join*


$xml->Products->AddChild("Product")->AddChild("ProductID",$array[$i]);

Funktioniert!

 
AmicaNoctis
12-02-2010, 11:24 
 
$xml->Products->AddChild("Product");
$xml->Products->Product->AddChild("ProductID",$array[$i]);


Der Fehler liegt in der zweiten Zeile. Da Product eine Sammlung ist, hättest du einen Index verwenden müssen
...Products->Product[n]->AddChild.... Ohne Index wird im Zweifelsfall immer der erste gefundene Knoten dieser Collection verwendet und darum wurde das Kind auch dort eingefügt.

Gruß,

Amica

 
Skrok
12-02-2010, 11:48 
 
Danke für die Info. Werde ich in Zukunft beachten!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:35 Uhr.