php 在laravel中解析XML

pxiryf3j  于 2023-03-07  发布在  PHP
关注(0)|答案(3)|浏览(198)

我尝试生成一个xml,但我得到一个错误:FatalErrorException in 6955f07d83b93bb8aa89577b116866e228e0c155.php line 1 syntax error, unexpected 'version' (T_STRING).
我不知道我在代码中做错了什么。
我的控制器功能是:

public function feed($gallery_id){
        $products = Products::select("id","title","brand","url","path")->where("gallery_id",$gallery_id)->get();

        foreach ($products as $product) {
            $product->path = url($product->path);
        }
        return response()->view('xml.gallery', compact('products'))->header('Content-Type', 'text/xml');

    }

我的刀片(xml.gallery):

<?xml version="1.0"?>
    <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
      <channel>
        <title>Test Store</title>
        <link>http://domain.com</link>
        <description>An example item from the feed</description>
       @​foreach($products as $product)
          <item>
          <g:id>1</g:id>
          <g:title>something</g:title>
          <g:description>Solid plastic Dog Bowl in marine blue color</g:description>
          <g:link>http://www.zara.com</g:link>
          <g:image

_link>http://domain.com/images/photos_gallery/14788772681.png</g:image_link>
      <g:price>12 GBP</g:price>
      <g:brand>Nike</g:brand>
       <g:availability>in stock</g:availability>
       <g:condition>new</g:condition>
    </item>
  @​endforeach
  </channel>
</rss>
qv7cva1a

qv7cva1a1#

看起来short_open_tag已经被启用了。它告诉PHP是否应该允许PHP的开始标记的缩写形式(<? ?>)。如果你想将PHP与XML结合使用,你可以禁用这个选项以便内联使用<?xml ?>
但其他简单的解决方案是在视图文件中编写以下代码:

<?php echo '<?xml version="1.0"?>'; ?>
yv5phkfx

yv5phkfx2#

我们解决这个问题的方法是将xml头存储为变量,然后传递沿着:

$xml_version = '<?xml version="1.0"?>';

return response()->view('xml.gallery', compact('products', 'xml_version'))->header('Content-Type', 'text/xml');

然后你可以把它放进你的刀片里:

{{$xml_version}}
qqrboqgw

qqrboqgw3#

试试这个从Laravel刀片文件返回XML响应。像数字海洋这样的云主机不需要这个,你可以把XML作为HTML标签返回。但是cPanel主机显示了一个语法错误。所以回显XML开始标签。我会工作的。

<?php 
echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>

相关问题