XML Writer XML вывод

Я работаю над конвертером 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();

Как-то не работает Это приводит меня только к пустой странице с выводом. Но если это будет правильный метод, кто-то может мне это объяснить?

заранее спасибо

4

Решение

Вы можете вывести содержимое в файл с openURI() метод. И после этого вы сможете скачать его. Используйте это вместо openMemory(),

$xml = new XMLWriter();

$xml->openURI("test.xml");

$xml->setIndent(true);
$xml->startDocument();

$query = new data_DataBaseQuery();
$xml->startElement();
.......
$xml->endElement();

$xml->flush();
1

Другие решения

Если вы хотите создать документ 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');

# ...

Рекомендации:

3

По вопросам рекламы [email protected]