我正在尝试使用XMLWriter将基本的mysql表写入xml,但是XMLWriter()在我的IDE中始终显示为“未定义的类”,在laravel的调试模式下始终显示为“未找到的类”,等等。>
据我了解,XMLWriter是安装php的基础,甚至我的phpinfo()都表明我当前安装的php(7.1.23)启用了XMLWriter,尽管我不能使用它。 php -m也证实了这一点。
我可以采取哪些步骤来诊断或解决此问题?我已经完成了卸载/重新安装php,重新启动apache甚至重新启动计算机的基本操作。
我对laravel / php很陌生,因此很可能错过了XMLWriter本身使用方面的明显知识。谁能提供一些有关我如何才能使它正常工作的见识?
这是我用于参考的代码
public function downloadXML($option)
{
switch($option) {
case 1: $list = Book::all()->toArray();break;
case 2: $list = Book::get('title')->toArray();break;
case 3: $list = Book::select('author')->groupBy('author')->get()->toArray();break;
}
$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument();
$xml->startElement('booklist');
foreach($list as $book)
{
$xml->startElement('data');
$xml->writeAttribute('id', $book->id);
$xml->writeAttribute('title', $book->title);
$xml->writeAttribute('author', $book->author);
$xml->endElement();
}
$xml->endElement();
$xml->endDocument();
$content = $xml->outputMemory();
$xml = null;
return response($content)->header('Content-Type', 'text/xml');
}
答案 0 :(得分:0)
我创建了一个程序包,它将大大简化您的操作:https://github.com/mtownsend5512/response-xml
您可以执行以下操作:
public function downloadXML($option)
{
switch($option) {
case 1: $list = Book::all()->toArray();break;
case 2: $list = Book::get('title')->toArray();break;
case 3: $list = Book::select('author')->groupBy('author')->get()->toArray();break;
}
return response()->xml($list);
}
如果要修改XML的外观,建议您查看Laravel resources。