使用PHP将XML格式化为JSON

时间:2013-10-15 15:45:51

标签: php xml json

我正在尝试从XML Feed的属性获取JSON Feed输出。我可以从XML中获取数据,但是,我无法正确格式化。错误似乎是json_encode未将大括号添加到输出日期。这是我到目前为止的代码:

<?php

    $url = 'http://cloud.tfl.gov.uk/TrackerNet/LineStatus';

    if(!$xml = simplexml_load_file($url))
    {
        die("No xml for you");
    }

    $linestatus = array();

    foreach ($xml->LineStatus as $line)
    {
        echo $line->Line['Name'];
        echo $line->Status['Description'];
    }

    header('Content-Type: application/json');
    print_r(json_encode($linestatus));

?>

3 个答案:

答案 0 :(得分:0)

echo正在搞砸一切。我认为您打算附加到linestatus,根据您的代码保留为空。

$linestatus[] = array(
    "name" => $line->Line['Name'],
    "description" => $line->Status['Description']
);

您还需要使用echo代替print_r来实际发出JSON。

答案 1 :(得分:0)

您将$linestatus声明为数组,然后在最终编码并尝试输出之前不要在其中放入任何内容。当然它不会按预期工作!相反,您应该用值填充它:

$linestatus = array();

foreach ($xml->LineStatus as $line)
{
    $linestatus[] = $line->Line;
}

header('Content-Type: application/json');
print_r(json_encode($linestatus));

答案 2 :(得分:0)

问题在于您没有将名称和描述存储到数组中。

试试这个:

foreach ($xml->LineStatus as $line)
{
    $linestatus[] =  array('name' => $line->Line['Name']);
    $linestatus[] =  array('description' => $line->Line['Description']);
}

Demo!