2016-07-13 20 views
0

私のディレクトリにxmlファイルを作成しました。私はこのファイルをブラウザでPHPを使って表示したいのですか?Php Laravel - xmlファイルをブラウザに表示するには

(私は、サイトマップなどということを示したい)

ここでは私のコードです: :ここ

<?xml version="1.0"?> 
<template><bla>blub</bla><foo>bar</foo><another_array><stack>overflow</stack></another_array></template> 

が結果です:

public function siteMap() 
    { 
     $test_array = array (
      'bla' => 'blub', 
      'foo' => 'bar', 
      'another_array' => array (
       'stack' => 'overflow', 
      ), 
     ); 

     $xml_template_info = new \SimpleXMLElement("<?xml version=\"1.0\"?><template></template>"); 

     $this->array_to_xml($test_array,$xml_template_info); 
     $xml_template_info->asXML(dirname(__FILE__)."/sitemap.xml") ; 
     header('Content-type: text/xml'); 
     dd(readfile(dirname(__FILE__)."/sitemap.xml")); 
    } 

    public function array_to_xml(array $arr, \SimpleXMLElement $xml) 
    { 
     foreach ($arr as $k => $v) { 
      is_array($v) 
       ? $this->array_to_xml($v, $xml->addChild($k)) 
       : $xml->addChild($k, $v); 
     } 
     return $xml; 
    } 

そしてここでは、sitemap.xmlとですenter image description here

私はブラウザにこのxmlファイルを表示したい、これを正しく行うためのアイデアはありますか?

EDITED:ヘッダー( 'Content-type:text/plain');

これはいくつかの追加のレポートで構成されています。

+1

を試してみてください –

+1

私は 'header( 'Content-type:text/plain');がうまくいくと思います! –

+0

@ Alok私は私の質問に追加しました。 – AFN

答えて

1

試してみてください。

<?php 

public function array_to_xml(array $data, \SimpleXMLElement $xml) { 
    foreach ($data as $key => $value) { 
     if (is_array($value)) { 
      if (is_numeric($key)) { 
       $key = 'item' . $key; //dealing with <0/>..<n/> issues 
      } 
      $subnode = $xml->addChild($key); 
      $this->array_to_xml($value, $subnode); 
     } else { 
      $xml->addChild("$key", htmlspecialchars("$value")); 
     } 
    } 
} 

public function siteMap() 
    { 
$data = array(
     'bla' => 'blub', 
     'foo' => 'bar', 
     'another_array' => array(
      'stack' => 'overflow', 
     ), 
    ); 

    $xml_template_info = new \SimpleXMLElement("<?xml version=\"1.0\"?><template></template>"); 
    $this->array_to_xml($data, $xml_template_info); 
    $xml_template_info->asXML(dirname(__FILE__) . "/sitemap.xml"); 
    header('Content-type: text/xml'); 
    die(readfile(dirname(__FILE__) . "/sitemap.xml")); 
//or return readfile(dirname(__FILE__) . "/sitemap.xml"); 
    } 
+0

私はLaravelでコーディングしていますので、$ this-> array_to_xml($ test_array、$ xml_template_info)を使用する必要があります。 – AFN

+1

そのような関数をLaravelのあなたのメソッドに実装してください。メソッドの本体を与えないので、単純な関数を追加します。 – rad11

+0

私はそれをしました、私たちがdie()を使うと、私は正しい結果を示しています。それはxmlの結果を返す方法はありますか? – AFN

1

エラーが出力と間違っている正確に何を言っていること。 </template>タグが閉じられた後に余分なコンテンツがたくさんあります。それは有効なXMLではないため、XMLとして表示されるものはありません。何か別のデータを送信しています!

おそらく、readfileコールの後にexit();を試してみてください。

0

ブラウザでxmlファイルの内容をxmlファイルと同じように表示したい場合は、ベースアドレスの後にurlにname_of_xml_file.xmlと書いてください。例えば

www.example.com/

かかわらず、あなたがそれを置く場所のname_of_xml_file.xml。

これはあなたのウェブサイトのフォルダにあり、特定のことが起こったときに自動ロードする場合は、そのページにリダイレクトする機能を使用する必要があります。

0

ビューでsitemap.blade.phpを作成します。
sitemap.blade.phpにコンテンツxmlを挿入します。
sistemapという名前の関数を作成します。

あなたのルートで
public function sitemap(){ 

    return response()->view('sitemap')->header('Content-Type', 'text/xml'); 

} 


:私は何

Route::get('sitemap', function() { 
    return view('sitemap'); 
}); 
0

Laravelのパブリックフォルダ内のxmlファイルを追加しました。 sitemap.xmlのようなもの。したがって、http://yourdomain.com/sitemap.xmlで簡単にアクセスできます。

0

Laravelのddは、デバッグ入力を参照できるようにHTMLの束を出力します。これは、デバッグのためのものです。ではなく、は通常のものをページに出力します。このように使うべきではありません。代わりに

dd(readfile(dirname(__FILE__)."/sitemap.xml")); 

は、現在の行動は何ですか?

return readfile(dirname(__FILE__)."/sitemap.xml"); 
関連する問題