XML To array in php

612

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

Answer

Solution:

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.

Usexml_parser_create andxml_parse_into_struct to make your desire array.

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

Answer

Solution:

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

People are also looking for solutions to the problem: php - How to fix memory leaks in Magento related to load() method?

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.