但是都不符合我的需求,也有人寫了專門用於生成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);
}
}
}
不足:批量導出的數據寫在一個文件中,應該分屬於幾個文件