How to Convert XML to JSON in PHP

In this post we will show you how to convert xml to json in php. we will show you different method for xml convert to json in php.

Method – 1

xml convert to json using json json_encode and json_decode. it is very easy way to convert xml to json.

Method – 2

convert xml to json using json json_encode and json_decode but using xml file. it is very easy way to convert xml to json. pass your url url and convert it in to jaon.

	$xml_file = fopen("books-xml.xml", "r") or die("Unable to open this books-xml.xml file!!");
	
	$get_xml_string =  fread($xml_file,filesize("books-xml.xml"));
	// convert string of XML(xml file data) into an object
	
	$xml_data   = simplexml_load_string($get_xml_string);
	// xml to json convert 
	
	$json_data  = json_encode($xml_data);
	// convert json to array
	
	$array_data = json_decode($json_data,TRUE);

Method – 3

In this method we use XmlToJson class and json_prepare_xml function to convert xml to json.

// assign class Xml To Json
class XmlToJson 
{
	public function json_prepare_xml ($xml_url) 
	{

		$get_file_contents= file_get_contents($xml_url);

		$get_file_contents = str_replace(array("\n", "\r", "\t"), '', $get_file_contents);

		$get_file_contents = trim(str_replace('"', "'", $get_file_contents));

		$get_simple_xml = simplexml_load_string($get_file_contents);

		$json_data = json_encode($get_simple_xml);
        // return json
		return $json_data;

	}
}

$json_data =  XmlToJson::json_prepare_xml("books-xml.xml");

Method – 4

A common pitfall is to forget that json_encode() doesn’t respect elements/data with a textvalue and attribute(s). it’ll select one in all those, that means dataloss. The operate below solves that downside. If one decides to travel for the json_encode/decode method, the subsequent operate is suggested.


function json_prepare_xml($xml_object) 
{

  foreach($xml_object->childNodes as $xml_val) 
  {
	if($xml_val->hasChildNodes()) 
	{
	 json_prepare_xml($xml_val);
	} else 
	{
	 if($xml_object->hasAttributes() && strlen($xml_object->nodeValue)){
	    $xml_object->setAttribute("nodeValue", $xml_val->textContent);
	    $xml_val->nodeValue = "";
	 }
	}
  }
}

$xml_url = "books-xml.xml";

$xml_object = new DOMDocument();
$xml_object->loadXML( file_get_contents($xml_url) );
json_prepare_xml($xml_object);
$string_xml = simplexml_load_string( $xml_object->saveXML() );
$json_data = json_decode( json_encode( $string_xml ) ) );