php - 为什么,我收到带有注释 $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'?>
解决方案
问题是<?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>
.
推荐阅读
- angular - NativeScript Angular 6 双向绑定在 TextField 上不起作用
- javascript - 如何创建类似 Instagram 的“流行标签”
- python - 延迟操纵杆 IF 语句
- realm - 如何在领域工作室中更改字段的类型
- ios - 在 iOS 12 中,基于 SceneKit 的应用程序的内存使用率明显更高
- java - 来自文件的 jDBI createStatement
- python - 根据标准创建截止日期
- android - 新材质组件中的按钮无法使用 android:background
- c# - 注册一个 Autofac 模块并返回 IServiceCollection
- rust - 在遍历 Vec 的元素时使用 powi