0

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] )

2 Answers 2

1

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]
)
Sign up to request clarification or add additional context in comments.

2 Comments

it's working well thanx.. But this is "Jugar method" Any other Real Logic plz
"Jugar method" means?
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.