Reputation: 161
i have to got response in XML . and i want to convert xml data to array using php. my XML record.
<soap:Body>
<CreateContact xmlns="http://www.tigerpawsoftware.com">
<pram>
<OfficePhoneNumber>8387909727</OfficePhoneNumber>
<EmailAddress>[email protected]</EmailAddress>
</pram>
</CreateContact>
</soap:Body>
Target Array as:-
array('OfficePhoneNumber' => 8387909727,
'EmailAddress' => [email protected] )
Upvotes: 0
Views: 1031
Reputation: 9583
Online Example: https://3v4l.org/KcJMX, You can optimize your primary array, Just learn from function.xml-parse-into-struct.php, I hope you will do it.
Use xml_parser_create
and xml_parse_into_struct
to make your desire array.
Using xml_parse_into_struct
you will got two array, one is indexes and other is values. So you can generate your desire result from those index and values, As you the indexes you call easily make the desire array.
Also look at those ($index, $vals)
arrays.
$xml = '<soap:Body>
<CreateContact xmlns="http://www.tigerpawsoftware.com">
<pram>
<OfficePhoneNumber>8387909727</OfficePhoneNumber>
<EmailAddress>[email protected]</EmailAddress>
</pram>
</CreateContact>
</soap:Body>';
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);
echo '<pre>';
$out = array("OfficePhoneNumber" => $vals[$index['OFFICEPHONENUMBER'][0]]['value'], "EmailAddress" => $vals[$index['EMAILADDRESS'][0]]['value']);
print_r($out);
Result
Array
(
[OfficePhoneNumber] => 8387909727
[EmailAddress] => [email protected]
)
Upvotes: 1
Reputation: 4508
You can achieve this using the simplexml_load_string() function
PHP
$xml = simplexml_load_string('MY_XML_CONTENT', "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
var_dump($array);
var_dump should output :
array(1) {
["CreateContact"]=>
array(1) {
["pram"]=>
array(2) {
["OfficePhoneNumber"]=>
string(10) "8387909727"
["EmailAddress"]=>
string(21) "[email protected]"
}
}
}
Here is a EvalIN
Upvotes: 0