PHP Parsing of XML Response from API -
i have xml response i'm trying extract single item from, here response:
<getproductstockresponse> <getproductstockresult> <productstock> <product> <sku>aa-hf461</sku> <stock>23</stock> </product> </productstock> </getproductstockresult> </getproductstockresponse>
if echo screen is displayed as:
aa-hf461 23
i tried using simplexml_load_string it's not working, nothing comes out:
$res = $soapclient->getproductstock($q_param); $clfresponse = $res->getproductstockresult; echo $clfresponse; // works - see above $xml = simplexml_load_string($clfresponse); echo $xml; // empty echo $xml->stock; // empty
am making schoolboy error?
echo $xml
print string value of outer tag of xml. since getproductstockresponse
doesn't have text content, there no output. if want dump full xml string, use
echo $xml->asxml();
echo $xml->stock;
empty, outer element not contain <stock>
tag. if want drill down it, need access via each level of document:
echo (int) $xml->getproductstockresult->productstock->product->stock; // 23
(the typecasts important when dealing simplexml elements, see this answer more details)
if want able access elements level of document, can use simplexml's xpath
method, this:
echo (int) $xml->xpath('//stock')[0]; // 23
this print first <stock>
element level of document, in general it's better idea navigate document according structure.
finally, if testing via browser, aware xml elements not render correctly unless escape output:
echo htmlspecialchars($xml->asxml());
Comments
Post a Comment