XML mit Namespace prefix (ALT: Sonderzeichen in diversen XML Knoten ersetzen)

Nachtrag:
Fahrzeugdaten sind, wenn ich
PHP:
curl_setopt($cu, CURLOPT_RETURNTRANSFER, TRUE);
einsetze aber nicht mehr verfügbar.
 
Die RETURNTRANSFER-Option teilt curl mit, dass der Content, welcher beim Ausführen mittels curl_exec() zurück kommt, nicht direkt an den Browser geschickt sondern einer Variable zugewiesen werden soll. Daher siehst du die Rückgabe zunächst nicht mehr. Das ändert sich, wenn du $cudata mittels echo ausgibst. Standardmäßig ist diese Option auf false, daher wird alles an den Browser geschickt und landet nicht in der Variable. Die bekommt den Rückgabewert der Funktion als boolscher Wert zurück und der ist halt kein String. Steht aber alles im Manual zu den curl-Funktionen ;-)
 
Ich bin nun ein kleines Stück weiter.
Meine Schleife gibt mir schon mal die Modelle aus:
PHP:
for($i=0; $i<$anzahlItems; $i++){
     
        echo "<hr>";
        $path = "/my_search:search-result/my_search:ads/my_ad:ad/my_ad:vehicle/my_ad:model";
        $res = $xml->xpath($path);
        echo $res[$i]->children($namespaces['my_resource'])->{'local-description'}."<br>" ;
 
    }
Jetzt sind aber in der XML bestimmte Werte nicht als Kindelement eines Knotens sondern als Parameter? Key? innerhalb des Knotens deklariert.
Code:
<ad:detail-page url="http://suchen.mobile.de/auto-inserat/vw-golf-vi-1-4-*****.html"/>
Die URL bekomme ich noch nicht angesprochen. Könnt ihr mir weiterhelfen?

Vielen Dank
 
Zuletzt bearbeitet:
OK, ich habs:
PHP:
$path = "/my_search:search-result/my_search:ads/my_ad:ad";
        $res = $xml->xpath($path);
        $attrs = $res[$i]->children($namespaces['my_ad'])->{'detail-page'}->attributes();
 
Nächstes Problem. So langsam verlier ich die Lust :(

Mir gelingt es nun, den Inhalt der Knoten in ein Array zu schreiben. Egal ob der gewünschte Wert zwischen den Tags des Knotens oder als Schlüsselwert im Tag selbst deklariert ist:
PHP:
        //Fahrzeug Modell-Detail
        $pathModellDetail = "/mySEARCH:search-result/mySEARCH:ads/myAD:ad/myAD:vehicle";
        $resModellDetail = $xml->xpath($pathModellDetail);
        $attrModellDetail = $resModellDetail[$i]->children($namespaces['myAD'])->{'model-description'}->attributes();
        $carAllItems[$i]['fzModellDetail'] = $attrModellDetail['value'];
    
        //Fahrzeug Unfaller
        $pathUnfaller = "/mySEARCH:search-result/mySEARCH:ads/myAD:ad/myAD:vehicle";
        $resUnfaller = $xml->xpath($pathUnfaller);
        $attr02 = $resUnfaller[$i]->children($namespaces['myAD'])->{'accident-damaged'}->attributes();
        $carAllItems[$i]['fzUnfaller'] = $attr02;

Ist sicher nicht kompakt, geschweige denn elegant, aber so komme ich erstmal zurecht. Jetzt gefällt sich mobile.de aber darin, nicht für jeden Datensatz die gleiche Anzahl von Knoten zu generieren. So ist der Knoten für die Verkehrssicherheit des Fahrzeugs, anders als der Knoten im obigen Beispiel
Code:
//Unfaller
<ad:accident-damaged value="false"/>

Code:
//Fahrtüchtig
<ad:roadworthy value="true"/>
nicht etwa auf false gesetzt wenn das Fahrzeug nicht fahrtüchtig ist, sondern schlichtweg nicht vorhanden.
Das erzeugt natürlich in meiner Schleife, in der ich mein Array mit den Werten der Knoten fülle eine Warnung wenn ich auf einen Datensatz treffe, für den der Knoten nicht existiert:
Code:
Warning: SimpleXMLElement::__toString(): Node no longer exists in...
Ich habe versucht zu prüfen ob der Pfad existiert und den Wert entsprechend zuzuordnen, aber das wirkt nicht:
PHP:
if($resVerkehrssicher[$i]->children($namespaces['myAD'])->{'roadworthy'}->attributes() != null){
            $attr03 = $resVerkehrssicher[$i]->children($namespaces['myAD'])->{'roadworthy'}->attributes();
            $carAllItems[$i]['fzVerkehrssicher'] = $attr03;
            }else{
            $carAllItems[$i]['fzVerkehrssicher'] = "nk";        
        }

Kann mir jemand weiterhelfen?
 
Zuletzt bearbeitet:
Hallo placedog,
ich komme leider gerade nicht an das Script das ich damals bearbeitet habe. Im Moment funktioniert die Schnittstelle auch nicht. Woran das liegt weiß ich nicht, da ich es zwischendurch nicht angefasst habe. Ob der Kunde neue Zugangsdaten hat oder mobile.de was geändert hat ist unklar. Kann aber sein dass ich da selbst nochmal ran muss in der nächsten Zeit. Mehr kann ich leider nicht sagen. Das Projekt hatte mich seinerzeit an meine Grenzen gebracht.
 
Zurück