php中對xml的處理,雖然說實(shí)際開發(fā)中目前用的少了,但是難免會(huì)用到,用到的時(shí)候呢,總結(jié)起來還是稍稍有那么一丁點(diǎn)的麻煩。
我們來看看yii2中是怎么對xml進(jìn)行處理的。會(huì)超乎你想象的簡單哦。
我們以輸出xml格式的數(shù)據(jù)為例。
既然是輸出,必然就涉及到web請求與響應(yīng)了,不熟悉的可以先去了解下HTTP協(xié)議。
yii2中支持以下幾種返回格式,均可自定義配置。
HTML: implemented by yii\web\HtmlResponseFormatter.
XML: implemented by yii\web\XmlResponseFormatter.
JSON: implemented by yii\web\JsonResponseFormatter.
JSONP: implemented by yii\web\JsonResponseFormatter.
RAW: use this format if you want to send the response directly without applying any formatting.
我們就是沖著XML來的。
先來看一種簡單的輸出xml格式數(shù)據(jù)
public function actionTest () {
\Yii::$app->response->format = \yii\web\Response::FORMAT_XML;
return [
'message' => 'hello world',
'code' => 100,
];
}
這里我們指定了reponse響應(yīng)格式 FORMAT_XML,然后訪問這個(gè)test方法就可以看到頁面上輸出了xml類型的數(shù)據(jù)
<response>
<message>hello world</message>
<code>100</code>
</response>
上面提到的方式未免有點(diǎn)麻煩,麻煩在配置多項(xiàng)的時(shí)候就不是那么方便了,我們來自己創(chuàng)建reponse對象試一試
public function actionTest () {
return \Yii::createObject([
'class' => 'yii\web\Response',
'format' => \yii\web\Response::FORMAT_XML,
'formatters' => [
\yii\web\Response::FORMAT_XML => [
'class' => 'yii\web\XmlResponseFormatter',
'rootTag' => 'urlset', //根節(jié)點(diǎn)
'itemTag' => 'url', //單元
],
],
'data' => [ //要輸出的數(shù)據(jù)
[
'loc' => 'http://********',
],
],
]);
}
為了方便接下來的說明,上面一并做了配置,可以看到我們配置了響應(yīng)的格式format,單獨(dú)做了些配置,包括配置根節(jié)點(diǎn)rootTag,單元itemTag以及數(shù)據(jù)類型。有同學(xué)注意到了,這里其實(shí)我們很簡單的就實(shí)現(xiàn)了一個(gè)站點(diǎn)地圖的xml格式輸出。是的,就是這么簡單。