Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > Сформировать XML средствами PHP


Автор: zluka 21.5.2009, 23:41
Вобщем делаю статистику для одного приложения на iPhone.
Статистика простая, вроде:
Код

1. Masha......24
2. Sasha......21
3. Misha......19
...

Схема такая: отсылаем запрос (POST) с приложения, который подключаеться к скрипту script.php. Этот скрипт вытягивает данные из таблицы MySQL "scores" и делает XML файл. На iPhone приложение возвращаеться уже формированый xml который там и парситься.
Парсер я напишу. А вот как сформировать этот XML файл? 

Дайте пожалуйста пример или какую-нибудь ссылку куда копать..
Спасибо.



Автор: bars80080 22.5.2009, 00:07
да просто напиши 

Код

header('Content-type: text/xml'); 
header('Content-Disposition: inline; filename=rss.xml');
echo '<?xml version="1.0" encoding="cp-1251" ?>';
echo '<rss> ... разные тэги ... </rss>';
exit;

Автор: skyboy 22.5.2009, 00:40
Цитата(zluka @  21.5.2009,  22:41 Найти цитируемый пост)
А вот как сформировать этот XML файл? 

хороший пример привел bars80080 - в примере ничего лишнего.
от себя добавлю резюме: что HTML, что XML - суть простой текст.
потому формируется известными тебе способами: либо при помощи операторов вывода echo/print(и прочими функциями с выводом типа print_r, var_dump или ещё чего покруче), либо вынесением текста ща пределы тегов "<?php ?>":
Код

<?xml version="1.0" encoding="cp-1251" ?>
<root>
<?php
// ... вывод вложенных тегов
?>
</root>

Чтоб клиент знал, что ему передали именно xml, а не html  или SVG, к примеру, как раз и отправляется соответствующий заголовок при помощи констуркции
Код

header('Content-type: text/xml'); 

однако, напомню, что отправка заголовков должна происходить до любого вывода, потому подобный код не сработает, как надо:
Код

<?xml version="1.0" encoding="cp-1251" ?>
<root>
<?php
header('Content-type: text/xml'); 
// ... вывод вложенных тегов
?>
</root>

header('Content-Type...') будет отправлен после начала вывода и клиент получит сначала заголовок "Content-Type: text/html", отправляемый НТТР-сервером при любом выводе, а потом уже вдогонку - Content-Type: text/xml, но будет уже поздно. И весь твой сформированный XML будет трактоваться как HTML и выводиться соответствующе.

Автор: korvin72 13.9.2010, 13:51
Цитата(skyboy @ 22.5.2009,  00:40)
Код

<?xml version="1.0" encoding="cp-1251" ?>
<root>
<?php
// ... вывод вложенных тегов
?>
</root>


Такой код вообще не работает.
Браузер выдает ошибку:
Parse error: syntax error, unexpected T_STRING in Y:\home\localhost\www\jquery\exchanger\scripts\test.xml.php on line 1

У меня есть вариант, который точно работает:

Код

<?
header('Content-type: text/xml');


Создаем обьект domdocument :

Код

$domdocument = new domDocument('1.0', 'WINDOWS-1251');


Далее формируем xml-документ:

Код

$xml .= "<item>".
        "<from>".$data_cur[$srcID]['name']."</from>".
        "<to>".$data_cur[$dstID]['name']."</to>".
        "<in>".$src_amount."</in>".
        "<out>".$dst_amount."</out>".
        "<amount>".$reserv[$dstID]."</amount>".
       "</item>";


Остается только загрузить документ и вывести его в браузер:

$domdocument->LoadXML($xml);
$domdocument->formatOutput = true;
echo $domdocument->saveXML();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)