Я работаю над конвертером PostgreSQL в XML. Который должен извлекать значения из разных таблиц. Соответствующий код ниже:
$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->startDocument();
$query = new data_DataBaseQuery();
$xml->startElement();
.......
$xml->endElement();
И если я использую echo htmlentities($xml->outputMemory());
Я получаю в качестве выхода то, что я хочу.
Но я бы хотел, чтобы экспортируемый файл не загружался с конкретным именем.
Можете ли вы помочь мне в этом пункте?
$xml->openURI('test.xml');
...
$xml->flush();
Как-то не работает Это приводит меня только к пустой странице с выводом. Но если это будет правильный метод, кто-то может мне это объяснить?
заранее спасибо
Вы можете вывести содержимое в файл с openURI()
метод. И после этого вы сможете скачать его. Используйте это вместо openMemory()
,
$xml = new XMLWriter();
$xml->openURI("test.xml");
$xml->setIndent(true);
$xml->startDocument();
$query = new data_DataBaseQuery();
$xml->startElement();
.......
$xml->endElement();
$xml->flush();
Если вы хотите создать документ XML на лету, предлагая загрузку, это комбинация отправки правильных заголовков ответа HTTP и создания XMLWriter написать в стандартный вывод:
header('Content-type: text/xml');
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->setIndent(true);
$writer->startDocument();
$query = new DataBaseQuery();
$writer->startElement();
# ...
$writer->endElement();
# ...
$writer->endDocument();
$writer->flush();
Это должно сделать браузер дисплей XML-файл — это так, что вы можете легко проверить работоспособность создаваемого XML.
Чтобы сделать его предлагающим диалог загрузки, вы должны указать дополнительный второй заголовок:
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename=example.xml');
# ...
Рекомендации: