したがって、symfonyでxmlドキュメントを作成しようとしています。Symfony 2:xmlレスポンスのヘッダー表示を防止する
$response = new Response($this->render(
'MyBundle:Sitemap:sitemap.xml.twig',
[
'slugArray' => $slugArray,
'curDate' => $curDate
]
));
$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
return $response;
$slugArray
が1000個のリンクの周りに含まれています、私はとテンプレートを呼び出すコントローラで
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for slug in slugArray %}
<url>
<loc>{{ slug }}</loc>
<lastmod>{{ curDate }}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
{% endfor %}
</urlset>
:世代は問題なく動作し、私は次のようにsitemap.xml.twig
という名前小枝テンプレートと文書を返しますこれらはすべて有効であり、$curDate
にはdate('Y-m-d', time())
の値が含まれています。
XML-Verarbeitungsfehler: nicht wohlgeformt
Adresse: http://localhost:8888/myWebsite/sitemap.xml
Zeile Nr. 1, Spalte 5:
HTTP/1.0 200 OK
----^
これは基本的にXMLドキュメントを意味しているが十分に形成されていない。しかし、
、私はサイトマップにアクセスするためにしようと、私は次のエラーを取得します。
xmlを解析するときに何らかの理由でヘッダーが考慮されるため、エラーが発生します。 xml自体は完全に有効です.Firefoxの開発ツールからの応答をコピーし、ヘッダーを残してオンラインバリデーターでチェックすると、エラーは表示されません。
$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
を削除すると、私は平易なHTMLを取得します。
どのように問題なくブラウザで解析できるxmlレスポンスを作成できますか?
さまざまな文字セットを使用して、Chromeで直接レスポンスを読み込もうとしましたか?私はsymfonyでAPIエンドポイントを作成したときに同様の問題に遭遇したことを覚えていますが、当時はブラウザの問題のみでした。 –
レスポンスで個別に設定しようとしましたか?例:$ response = new Response(); $ slugArray、 'curDate' => $ curDate])););};};}}};}}}; $ response-> setCharset( 'charset = utf-8'); $ response-> setStatusCode(Response :: HTTP_OK); $ response-> headers-> set( 'Content-Type'、 'application/xml'); $ response-> send(); ' – Rooneyl
@Rooneyl私はしましたが、結果に全く影響しませんでした –