Maison > Article > développement back-end > laravel génère des données XML, php génère des données au format XML
Contexte :
Les collègues SEO souhaitent soumettre des données au format XML aux moteurs de recherche par lots. Le projet actuel est développé à l'aide du framework Laravel, c'est pourquoi cet article est né. Il existe de nombreux exemples sur Internet concernant la sortie php au format XML. Je l'ai également déplacé auparavant. Ce n'est pas un problème de simplement le tester sur le fichier php. Si je le déplace vers le framework Laravel, il y aura des pièges. est la question d'en-tête.
Comment le framework Laravel renvoie-t-il des données au format XML ?
Si vous utilisez header("Content-type: text/xml");
cela n'aura aucun effet et une erreur comme celle-ci sera affichée :
Cette page contient les erreurs suivantes :
erreur à la ligne 14 à la colonne 6 : déclaration XML autorisée uniquement au début du document
Ci-dessous un rendu de la page jusqu'à la première erreur.
Le framework Laravel renverra les données en mode texte/html lors de la sortie XML La solution :
nécessite une réponse de retour ($xml,200) ->en-tête. ("Content-type", "text/xml"); De cette façon, vous pouvez changer l'en-tête
laravel renvoie un exemple de format de données XML :
/** * 神马搜索数据结构化,written:yangxingyi Data:2018-10-25 11:15 */ public function index(Request $request){ $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11', ), array( 'title' => 'title2', 'content' => 'content2', 'pubdate' => '2009-11-11', ) ); $title_size = 1; $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; $xml .= "<article>\n"; foreach ($data_array as $data) { $xml .= $this->create_item($data['title'], $title_size, $data['content'], $data['pubdate']); } $xml .= "</article>\n"; #echo $xml; return response($xml,200)->header("Content-type","text/xml"); } /** * 神马搜索数据结构化,节点的具体内容 written:yangxingyi */ private function create_item($title_data, $title_size, $content_data, $pubdate_data) { $item = "<item>\n"; $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n"; $item .= "<content>" . $content_data . "</content>\n"; $item .= " <pubdate>" . $pubdate_data . "</pubdate>\n"; $item .= "</item>\n"; return $item; }
PHP génère des données au format XML et ajoute un en-tête("Content-type: text/xml"); l'en-tête suffit
<?php header("Content-type: text/xml"); $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11', ), array( 'title' => 'title2', 'content' => 'content2', 'pubdate' => '2009-11-11', ) ); $title_size = 1; $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; $xml .= "<article>\n"; foreach ($data_array as $data) { $xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']); } $xml .= "</article>\n"; echo $xml; //创建XML单项 function create_item($title_data, $title_size, $content_data, $pubdate_data) { $item = "<item>\n"; $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n"; $item .= "<content>" . $content_data . "</content>\n"; $item .= " <pubdate>" . $pubdate_data . "</pubdate>\n"; $item .= "</item>\n"; return $item; } ?>
Pour plus de connaissances sur PHP, veuillez visiter le Tutoriel PHP !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!