よろしくお願いします。私は時々ばかげた質問にいくつかの素晴らしい答えを得たので、もう一度ありがとう.
PHP、Xpath (名前空間)、および SimpleXML を使用して SOAP 応答を解析しようとしています。以下は、レスポンスのスニペットです。私がする必要があるのは、それぞれをループし<ns1:file></ns1:file>
てDBに追加することです。しかし、私はそれを行う方法がわかりません。助けてください!
名前空間のもの
$x = simplexml_load_string($response);
$x->registerXPathNamespace('ns1', 'http://ws.icontent.idefense.com/V3/2');
応答は次のとおりです。
<ns1:mal_files>
<ns1:file>
<ns1:id>2895144</ns1:id>
<ns1:md5>2189c3d3857ba0cabd19c8aa031d63cd</ns1:md5>
<ns1:sha1>c20b26148caa059ecf85e9b29df4e28e8354d655</ns1:sha1>
<ns1:path>%WINDIR%\Temp\Temporary Internet Files\Content.IE5\K9ANOPQB\1219831[1].htm</ns1:path>
<ns1:size>110</ns1:size>
<ns1:code_available>true</ns1:code_available>
<ns1:len_char>fixed</ns1:len_char>
</ns1:file>
<ns1:file>
<ns1:id>2895147</ns1:id>
<ns1:md5>a533825ef1752630a300125b3eef6825</ns1:md5>
<ns1:sha1>ec7feb1414b3c2e720f6c06e2750421b73634f87</ns1:sha1>
<ns1:path>%WINDIR%\Temp\Temporary Internet Files\Content.IE5\4PMB8T67\bg[1].jpg</ns1:path>
<ns1:size>707</ns1:size>
<ns1:code_available>true</ns1:code_available>
<ns1:len_char>fixed</ns1:len_char>
</ns1:file>
<ns1:file>
<ns1:id>2895155</ns1:id>
<ns1:md5>c88724e985efcc82173c0d3aa0b77dfd</ns1:md5>
<ns1:sha1>ecc042ca06aac988cd4593bb2b25fa39c4b2a819</ns1:sha1>
<ns1:path>%WINDIR%\Prefetch\24604775.EXE-3ADEC0C2.pf</ns1:path>
<ns1:size>44940</ns1:size>
<ns1:code_available>true</ns1:code_available>
<ns1:len_char>fixed</ns1:len_char>
</ns1:file>
<ns1:file>
<ns1:id>2895158</ns1:id>
<ns1:md5>422a011793af6195ea517c2c4a26bdbc</ns1:md5>
<ns1:sha1>f449240c091c27e2531342d6b291d6a7e4655834</ns1:sha1>
<ns1:path>%WINDIR%\Temp\Temporary Internet Files\Content.IE5\KPYV0TM7\gamesleap[1].png</ns1:path>
<ns1:size>2676</ns1:size>
<ns1:code_available>true</ns1:code_available>
<ns1:len_char>fixed</ns1:len_char>
</ns1:file>
</ns1:mal_files>
PHPコード
$md5 = $x->xpath('//ns1:mal_files/ns1:file/ns1:md5'); // Returns array :(
PHP コードはすべての MD5 の配列を返しますが、<ns1:file></ns1:file>
それは私が必要としているものではありません。
<ns1:file>
必要なのは、各 (ノード?) のキーイングごとにループし<ns1:id>
、関連するすべての要素 (id、md5、sha1 など) をレコードとして追加してから、次の要素に移動して<ns1:file>
繰り返すことです。そして明らかに、私が使用している PHP は配列を返しますが、これはここでは機能しません。
うまくいけば、質問が明確になりました...助けていただければ幸いです。
ありがとう!