создать и скачать xml с помощью кнопки и domdocument

хорошо, что я хочу сделать, это создать файл xml и загрузить его, если это возможно, не сохраняя на сервере.

то, что у меня есть до сих пор, создает xml с DOMDocument и сохраняет его на сервере

<?php
$domTree = new DOMDocument('1.0', 'UTF-8');
$rootXML = $domTree->createElement( 'XML' );
$rootXML = $domTree->appendChild($rootXML);

$personalData = $domTree->createElement( 'PERSONAL' );
$personalData = $rootXML->appendChild($personalData);
$personalData ->nodeValue = "Alan";
$domTree->save('MyXmlFile.xml');
?>

я знаю, что должен использовать что-то вроде этого

<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');

echo $xml_contents;
?>

но используя DOMDocument, я потерялся в том, как его использовать, ЗАРАНЕЕ СПАСИБО!


person Andres Perez Guevara    schedule 28.07.2014    source источник
comment
Если вы поместите эти вызовы заголовков в свой документ, то echo $domTree->saveXML(); это должно сработать.   -  person scrowler    schedule 29.07.2014
comment
ОТЛИЧНЫЙ!!!! спасибо сработало отлично!   -  person Andres Perez Guevara    schedule 29.07.2014


Ответы (1)


Для вывода на стандартный вывод — это то, что PHP отправляет в браузер — вы можете использовать выходной поток PHP:

header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');
$domTree->save('php://stdout');

Этот принцип работает (почти) со всем в PHP, который ожидает имя файла, что является довольно приятной функцией. Сравните, например, с моим ответом на phpexcel для загрузки.

Это просто то же самое, как если бы вы сделали:

echo $domTree->saveXML();

как echo так же "выводит" на стандартный вывод. Но для больших данных предпочтительнее концепция потока.

Если вы хотите узнать больше о стандартном выводе, в Википедии есть обзор этих так называемых стандартных потоков:

Для правильного типа содержимого XML это немного зависит от того, что вы делаете, я предлагаю взглянуть, если вы хотите узнать немного больше:

person hakre    schedule 30.07.2014