php 如何在Laravel blade模板中显示XML文件?

jbose2ul  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(143)

我加载一个XML文件并从中获取所需的元素。像这样:

$xml = simplexml_load_file('example.com');
$$exampleElement = $xml->shop->offers->offer;

如果我通过刀片模板中的{{dd($exampleElement)}}输出它,我会得到这样的结果:

SimpleXMLElement {#478 ▼
  +"@attributes": array:3 [▶
    "id" => "835376"
    "available" => "false"
  ]
  +"categoryId": "2411"
   ...
  +"oldprice": "2690"
  +"param": array:7 [▶
    0 => SimpleXMLElement {#1642 ▶
      +"@attributes": array:1 [▶
        "name" => "Color"
      ]
      +"0": "Green"
    }
    1 => SimpleXMLElement {#1643 ▶
      +"@attributes": array:1 [▶
        "name" => "Brand"
      ]
      +"0": "Adidas"
    }
    ...
  ]
  +"picture": array:2 [▶
    0 => "https://example.com/1.jpg"
    1 => "https://example.com/2.jpg"
  ]
}

如果我通过{{$exampleElement}}以标准方式输出,则不会显示任何内容。
我需要做什么才能使元素的输出是这种格式?:

<categoryId>2411</categoryId>
<param name="Color">Green</param>
...

muk1a3rh

muk1a3rh1#

您可以使用SimpleXMLElement的asXML方法:
基于SimpleXML元素返回格式良好的XML字符串
https://www.php.net/manual/en/simplexmlelement.asxml.php
所以在你的情况下,这将是:{{ $exampleElement->asXML() }}
如果只想在模板中显示XML,而不想显示其他内容,并希望浏览器将输出处理为XML,则应该绕过刀片模板/视图,直接从控制器中输出具有正确头部的XML:

$xml = simplexml_load_file('example.com');
$exampleElement = $xml->shop->offers->offer;
$exampleString = $exampleElement->asXML();

return response($exampleString, 200, [
    'Content-Type' => 'application/xml'
]);

相关问题