ThinkPHP生成xml格式並導出此xml格式的文件(批量導出)

網上找了好多種方法,大概有這四種方法,拼接xml字符串,利用DomDocument,利用XMLWriter利用SimpleXML。

但是都不符合我的需求,也有人寫了專門用於生成XML格式文件的接口,或者方法,但說實話我借用過來後並不好使,可能我技術水平不高用不好大師的方法吧(真是的),於是輾轉還是自己解決吧,期間也請教了一些人(很感謝),終於實現了功能的一部分,後面我會把功能的不足之處貼出來,希望路過的大神能幫我改改,共同進步,學無止境。我自己用的是拼接xml字符串,對於導出的話,因爲用的是ThinkPHP框架,裏面有一個download方法,填對參數可以直接導出xml文件,有興趣的同學可以直接去翻看。

需求:通過CheckBox一項或多項進行選擇,然後導出選中的文件(生成與導出看似同步),考慮到服務器存儲空間不可在服務器端生成文件。

前端部分就不貼了,和我之前批量刪除是一個道理,可以去查我前面的博文。

public function exportXml()
 {
    $id = I('id');
    if (!empty($sqdh)) {
        $ids = implode(',', $id);
        $id = is_array($id) ? $ids : $id;//判斷是否是數組
        $condition['id'] = array ('in',$id);
        $res = M('表名')->where($condition)->select();//查數據庫
        foreach ($res as $value){
            $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
            $xml .= "<business>";
            $xml .= "<body>";
            $xml .= "<input>";
            $xml .= "<id>" . $value['id'] . "</id>";
            $xml .= "<name>" .$value['name'] . "</name>";
            $xml .= "<sex>" . $value['xh'] . "</sex>";
            $xml .= "<age>" . $value['je'] . "</age>";
            $xml .= "<class>" . $value['sl'] . "</class>";
            $xml .= "<grand>" . $value['grand'] . "</grand>";
            $xml .= "<address>" . $value['spmc'] . "</address>";
            $xml .= "<phone>" . $value['phone'] . "</phone>";
            $xml .= "<qq>" . $value['qq'] . "</qq>";
            $xml .= "<wechart>" . $value['wechart'] . "</wechart>";
           
            $xml .= "</input>";
            $xml .= "</body>";
            $xml .= "</business>";
            //保存文件
            $date = date('YmdHis');
            $showname = $value['sqdh'] . "-" . "$date" . ".xml";
            //調用downlocad方法實現下載功能
            $http = new \Org\Net\Http;
            //用戶看到的文件
            $http->download('', $showname, $xml);
     }
   }
 }
不足:批量導出的數據寫在一個文件中,應該分屬於幾個文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章