1

I am using cakephp v2.5. I would like to convert an array into xml. The array looks like this;

$Items = array(
    (int) 0 => array(
        'Item' => array(
            'id' => '2'
        )
    ),
    (int) 1 => array(
        'Item' => array(
            'id' => '4'
        )
    )
)

To convert this array to xml, the following php code was run;

$xmlObject = Xml::fromArray(array('response' => $Items ));
echo $xmlObject->asXML();  

Unfortunately, the following error was encountered;

Warning (2): SimpleXMLElement::__construct(): Entity: line 3: parser error : Extra content at the end of the document [CORE\Cake\Utility\Xml.php, line 221]

How can this array be converted into xml in php or cakephp (using cake's built-in functions)?

EDIT: I found the problem but still not have the solution. The output of array('response' => $Items) returns a maximum depth reached message. Anyone can advise?

2 Answers 2

1

Try it to do manually

//just initialize this array to a xml tags data.
//<id></id> so intialize it with id
// E.g. $tags_array = ('id');
$tags_array = $Row1[0]; //here $Row1[0] is my tags array.


foreach($tags_array as $tags)
{
    // Doing this thing because space xml tags will create a problem.
     $tags1     = str_replace(" ","_",$tags_array);
}

header('Content-type: text/xml');   
$output = "<?xml version=\"1.0\" ?>\n";
$output .= "<root>"; 

$total_tags=count($tags);

for($i=0; $i <= count($arr); $i++)
{   
  for($tag=0;$tag < $total_tags; $tag++)
   {
     $output .= '<'.$tags[$tag].'>';
     $output .= $arr[$i][$tag];
     $output .= '</'.$tags[$tag].'>';
   }
}
$output .= "</root>";

echo $output;
Sign up to request clarification or add additional context in comments.

2 Comments

I am afraid this is a too tedious way to create web services. But thanks. Will use this method as last resort. Upvoted.
it is not so tadious. will work. i used it in my many big websites with their huge data.if need any help on this will availabel always. ;)
0
$xmlObject = Xml::fromArray('response' => $Items );
 echo $xmlObject->asXML();  

Doing like this worked for me.... Try i

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.