虽然phpinfo()和php -m将XMLWriter显示为已启用,但XMLWriter却无法使用

时间:2019-05-05 05:04:16

标签: php xml laravel

我正在尝试使用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');
}

1 个答案:

答案 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