2 Stimmen

PHP und XPath-Schleife

Vielen Dank im Voraus. Ich habe einige großartige Antworten auf meine manchmal dummen Fragen erhalten, also danke nochmal.

Ich versuche, eine SOAP-Antwort mit PHP, Xpath (Namespaces) und SimpleXML zu analysieren. Hier ist ein Ausschnitt der Antwort. Was ich tun muss, ist, durch jedes zu iterieren und es in eine DB hinzuzufügen. Aber ich bin mir nicht sicher, wie das geht. Bitte helfen Sie!

Namespace Sachen

$x = simplexml_load_string($response);    
$x->registerXPathNamespace('ns1', 'http://ws.icontent.idefense.com/V3/2');

Hier ist die Antwort:

        2895144
        2189c3d3857ba0cabd19c8aa031d63cd
        c20b26148caa059ecf85e9b29df4e28e8354d655
        %WINDIR%\Temp\Temporary Internet Files\Content.IE5\K9ANOPQB\1219831[1].htm
        110
        true
        fixed

        2895147
        a533825ef1752630a300125b3eef6825
        ec7feb1414b3c2e720f6c06e2750421b73634f87
        %WINDIR%\Temp\Temporary Internet Files\Content.IE5\4PMB8T67\bg[1].jpg
        707
        true
        fixed

        2895155
        c88724e985efcc82173c0d3aa0b77dfd
        ecc042ca06aac988cd4593bb2b25fa39c4b2a819
        %WINDIR%\Prefetch\24604775.EXE-3ADEC0C2.pf
        44940
        true
        fixed

        2895158
        422a011793af6195ea517c2c4a26bdbc
        f449240c091c27e2531342d6b291d6a7e4655834
        %WINDIR%\Temp\Temporary Internet Files\Content.IE5\KPYV0TM7\gamesleap[1].png
        2676
        true
        fixed

PHP-Code

$md5 = $x->xpath('//ns1:mal_files/ns1:file/ns1:md5'); // Gibt ein Array zurück :(

Der PHP-Code gibt ein Array aller MD5 für jedes zurück, was nicht das ist, was ich brauche.

Was ich brauche, ist, jedes der (Knoten?) für jedes der zu durchlaufen und anhand der alle ihre zugehörigen Elemente (id, md5, sha1, etc) als Datensatz hinzuzufügen, dann zum nächsten übergehen und wiederholen. Und offensichtlich gibt der von mir verwendete PHP-Code ein Array zurück, was hier nicht funktioniert.

Hoffentlich habe ich meine Frage klar gestellt... Ich wäre für jede Hilfe dankbar.

Danke!

0voto

JLRishe Punkte 94883

Sie sollten alle ns1:file-Elemente auswählen und durch sie iterieren, wobei Sie jeden Wert, den Sie innerhalb der Schleife benötigen, abrufen:

foreach($x->xpath('//ns1:mal_files/ns1:file') as $file) {
   $id = $file->xpath('ns1:id')[0];
   $md5 = $file->xpath('ns1:md5')[0];
    // etc.
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X