Thursday, 15 August 2013

Handle XML-object in php -



Handle XML-object in php -

this xml on request server. xml info current user. want check if more 1 respons totalnumberofresults. if 1 bigger 1 want iterate , find **results->resultitem->resulttype = person**.

each result excict in resultitem. if matches want pick rest of info of resultitem(firstname, lastname, zip, etc).

this xml request:

<searchresponse xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://secret.link”> <extensiondata/> <results> <resultitem> <extensiondata/> <addresses> <address_search> <extensiondata/> <addresstype>visiting</addresstype> <city>oslo</city> <country>norway</country> <formattedaddress>the whole adress</formattedaddress> <housenumber>13</housenumber> <municipalitycode>1234</municipalitycode> <street>streetadress</street> <streetid>12313</streetid> <zip>1234</zip> </address_search> </addresses> <birthdate xsi:nil="true"/> <collection>contacts</collection> <contactpoints> <contactpoint_search> <extensiondata/> <address>2312313</address> <contactpointtype>mobile</contactpointtype> <ismain>true</ismain> </contactpoint_search> <contactpoint_search> <extensiondata/> <address>mail@mail.com</address> <contactpointtype>email</contactpointtype> <ismain>false</ismain> </contactpoint_search> <contactpoint_search> <extensiondata/> <address>123123</address> <contactpointtype>landline</contactpointtype> <ismain>false</ismain> </contactpoint_search> <contactpoint_search> <extensiondata/> <address/> <contactpointtype>mobile</contactpointtype> <ismain>false</ismain> </contactpoint_search> </contactpoints> <firstname>name</firstname> <itemid>123123</itemid> <lastname>name’sen</lastname> <resulttype>person</resulttype> </resultitem> </results> <totalnumberofresults>1</totalnumberofresults> </searchresponse>

this of server-php have request:

$xml = simplexml_load_file($the_url_to_the_request); $result = []; if ($xml->totalnumberofresults > 1) { foreach ($xml $key => $value) { if ($value->results->resultitem->resulttype == "person") { //var_dump("it's match"); //var_dump($value->results->resultitem->resulttype);exit; $result = array("name" => $value->results->resultitem->firstname . "", "surname" => $value->results->resultitem->lastname . "", "zip" => $value->results->resultitem->addresses->address_search->zip . "", "by" => $value->results->resultitem->addresses->address_search->city . "", "city" => $value->results->resultitem->addresses->address_search->city . ""); echo($_get['callback'] . "(" . json_encode($result) . ");"); } } }else{ $result = array("name" => $xml->results->resultitem->firstname . "", "surname" => $xml->results->resultitem->lastname . "", "zip" => $xml->results->resultitem->addresses->address_search->zip . "", "city" => $xml->results->resultitem->addresses->address_search->city . "", "by" => $xml->results->resultitem->addresses->address_search->city . ""); echo($_get['callback'] . "(" . json_encode($result) . ");"); }

the question: it's working fine 1 result, nil happends multiple results.

you have alter element collection iterate foreach loop. should $xml->results, not $xml:

$xml = simplexml_load_file($the_url_to_the_request); $result = []; if ($xml->totalnumberofresults > 1) { foreach ($xml->results $key => $value) { if ($value->resultitem->resulttype == "person") { //var_dump("it's match"); //var_dump($value->resultitem->resulttype);exit; $result = array("name" => $value->resultitem->firstname . "", "surname" => $value->resultitem->lastname . "", "zip" => $value->resultitem->addresses->address_search->zip . "", "by" => $value->resultitem->addresses->address_search->city . "", "city" => $value->resultitem->addresses->address_search->city . ""); echo($_get['callback'] . "(" . json_encode($result) . ");"); } } } else { $result = array("name" => $xml->results->resultitem->firstname . "", "surname" => $xml->results->resultitem->lastname . "", "zip" => $xml->results->resultitem->addresses->address_search->zip . "", "city" => $xml->results->resultitem->addresses->address_search->city . "", "by" => $xml->results->resultitem->addresses->address_search->city . ""); echo($_get['callback'] . "(" . json_encode($result) . ");"); }

php xml

No comments:

Post a Comment