为什么,我在注释$ start var时遇到致命错误?

时间:2019-07-17 06:40:58

标签: php xml simplexml

当我像这样使用$ start var时:

$start = "<?xml version='1.0' encoding='utf-8'?/>";

我收到一个致命错误:

  

致命错误:未捕获的异常:无法在/home/users/....../test.php:6中将字符串解析为XML:6堆栈跟踪:#0 / home / users / ...... /test.php(6):SimpleXMLElement-> __ construct('<?xml version ='...')#1 {main}放在第6行的/home/users/....../test.php中

如何为XML生成漂亮的格式化XML标记?

$start = "<xml version='1.0' encoding='utf-8' />";
//$start = "<?xml version='1.0' encoding='utf-8'?/>";

$gmXML = new SimpleXMLElement($start);
$offers = $gmXML->addChild('offers');

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

echo $gmXML->asXML();

我需要的是

<?xml version='1.0' encoding='utf-8'?>

1 个答案:

答案 0 :(得分:3)

问题在于<?xml version='1.0' encoding='utf-8'?/>(尽管总有一个小错误)实际上没有定义XML元素,因为它没有根节点。

使用当前代码,您必须将<offers>元素添加到XML中才能为其提供实际的元素内容...

$start = "<?xml version='1.0' encoding='utf-8'?><offers />";

$gmXML = new SimpleXMLElement($start);

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

echo $gmXML->asXML();

还要注意,定义的末尾是?>而不是?/>

与您的其他XML版本...

$start = "<xml version='1.0' encoding='utf-8' />";

这实际上声明了一个名为<xml>的根节点。