我不能让asXml像它应该那样返回

时间:2013-09-16 00:30:21

标签: php xml simplexml

我有一些简单的代码,它应该返回一个xml字符串,但是当我运行它时它只返回:'132963660013292910001330196400'这是连接在一起的所有三个音乐会的第二个智慧中的三个。这直接从教科书中复制出来,所以我看不出我怎么做错了才能得到这个结果。我在这里误解了什么?

$simplexml = new SimpleXMLElement(
'<?xml version="1.0"?><concerts />');
$concert1 = $simplexml->addChild('concert');
$concert1->addChild("title", "The Magic Flute");
$concert1->addChild("time", 1329636600);
$concert2 = $simplexml->addChild('concert');
$concert2->addChild("title", "Vivaldi Four Seasons");
$concert2->addChild("time", 1329291000);
$concert3 = $simplexml->addChild('concert');
$concert3->addChild("title", "Mozart's Requiem");
$concert3->addChild("time", 1330196400);
echo $simplexml->asXML();

/* SHOULD output:
<concerts><concert><title>The Magic Flute</title><time>1329636600➥
</time></concert><concert><title>Vivaldi Four Seasons</title>➥
<time>1329291000</time></concert><concert><title>Mozart's Requiem➥
</title><time>1330196400</time></concert></concerts>
*/

1 个答案:

答案 0 :(得分:0)

听起来您正在通过浏览器查看脚本的输出,并且它正在尝试将文档解释为HTML(PHP脚本的默认内容类型)。

在最后一行(echo行)之前的任意位置添加

header('Content-type: text/xml');

或者,如果希望喜欢将其视为HTML文档,请尝试使用

echo '<pre>', htmlspecialchars($simplexml->asXML()), '</pre>';

在这里演示 - http://codepad.viper-7.com/BJ2adH