2017-12-22 10 views
0

Ich versuche, einige Felder aus einer XML-Datei in PHP zu extrahieren. Dies funktioniert für die meisten Felder, aber einige von ihnen geben mir Fehler und ich verstehe nicht warum.Get Feld aus XML-Datei mit PHP

XML-Beispiel:

<products> 
    <product> 
    <ns2:name>Some name</ns2:name> 
    <offers> 
     <offer id="123"> 
     <ns2:productUrl>https://www.something.here</ns2:productUrl> 
     <priceHistory> 
      <ns2:price currency="EUR">299.00</ns2:price> 
     </priceHistory> 
     </offer> 
    </offers> 
    </product> 
</products> 

Ich habe bereits den Namen:

$name = mysql_real_escape_string($products->product->children('ns2', true)->name); 

ich den gleichen Preis und PRODUCTURL tun wollte, aber das funktioniert nicht:

$URL = $products->product->offers->offer->children('ns2',true)->productUrl;  
$price = $products->product->offers->offer->priceHistory->children('ns2', true)->price; 

Kann mir jemand sagen, warum das nicht funktioniert und wie ich Produktpreis und Preis bekommen kann?

+0

Was bedeutet "das geht nicht"? Diese Zeilen sollten die richtigen Elemente zurückgeben, siehe https://eval.in/924453 – iainn

+0

Vielleicht möchten Sie sich http://php.net/manual/en/domxpath.registernamespace.php ansehen vielleicht – RamRaider

+0

Erster Fehler ist Hinweis: Probieren Eigenschaft von Nicht-Objekt zu erhalten. Der zweite Fehler ist Fatal error: Aufruf einer Memberfunktion children() auf null. Beide auf der Linie des Erhaltens von $ URL. Script geht nach dem zweiten Fehler nicht weiter. – MNL

Antwort

0

Ich habe es herausgefunden. Scheint, dass zwei Kinder auf der obersten Ebene waren. Erster ohne Daten. Das hat den Fehler verursacht. Erhalte null und wollte Kinder von null bekommen, was offensichtlich nicht funktioniert hat.