首页 > 解决方案 > 为什么,我收到带有注释 $start var 的致命错误?

问题描述

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

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

我收到一个致命错误:

致命错误:未捕获的异常:字符串无法在 /home/users/....../test.php:6 中解析为 XML 堆栈跟踪:#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'?>

标签: phpxmlsimplexml

解决方案


问题是<?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>.


推荐阅读