Как принять xml-запрос

shadow1975

Новичок
Как принять xml-запрос

Уважаемые Эксперты!

Заранее прошу прощения, если вопрос ламмерский.
Мне нужно написать на PHP 4 скрипт, который принимает xml-запрос, посланный методом POST, и в ответ посылает ответ тоже в xml-виде.
Запросы простые, короткие. Проблема в том, что я раньше с xml дела не имел.
Вопрос: как принять xml-запрос, посланный методом POST?
По крайней мере, где об этом можно прочитать?

С уважением,
Кирилл
 

aleks_raiden

Новичок
Совершенно так же, как и любойдругой корректный HTTP запрос к вашему скрипту. внутри него проверяете $_POST переменную либо другие переменные окружения и обрадатываете их, далее выводите обычным оператором echo/print, единственное что нужно, наверное, отослатьперед тем header с корректным MIME-type
 

shadow1975

Новичок
aleks_raiden, Вы имеете ввиду, что-то типа
header("Content-type: text/xml; charset=utf-8") ?

Еще раз извиняюсь за ламерский вопрос:
насколько я понимаю, $_POST - это массив. Где там "сидит" этот самый XML-запрос?
 

Фанат

oncle terrible
Команда форума
shadow1975
ты наощупь, что ли, писать свой скрипт собрался?
Без запроса?
 

shadow1975

Новичок
Фанат, к сожалению, ты фактически прав :)
Т.е. я знаю как выглядит запрос, но могу его только "проимулировать".

Запрос выглядит примерно так:

<?xml version=”1.0” encoding=”windows-1251”?>
<request uid=”уникальный идентификатор” protocol=”тип протокола” date=”Дата”>
....
<content-text content-type="тип содержимого">содержимое</content-text>
</request>

Меня собственно интересует в первую очередь "содержимое".
 

Фанат

oncle terrible
Команда форума
ну так пошли сам себе из обычной формы такой запрос.
в этом случае ты способен найти в массиве $_POST его это "содержимое"?
 

aleks_raiden

Новичок
а написать что-то типа "var_dump($_POST);" и самому ручками разобратся в структуре любых пременных окружения слабо?

заголовок такой, какой требует ваше приложение. такой или же application/xml или чо-то похожее, это уже частности.
 

shadow1975

Новичок
Я пока пытаюсь делать так.
Допустим, вытащил я запрос, пусть он сидит у меня в $xml.

Дальше я пишу:

PHP:
$xml = xmldoc($xml);

$xml->xpath_init();

$ctx = xpath_new_context($xml);

$nodes = xpath_eval($ctx,'//content-text');

foreach($nodes->nodeset as $node)
{
echo $node->content."<br>";
    };
Но ничего не выводится. Вероятно, я что-то напахал...
 

aleks_raiden

Новичок
а у тебя рсширния для работы с XML подключены? А мануалы/статьи про работу с XML в РНР читал, тут же на сайте было. Лучше всего поствь РНР 5, там Simple XML и другие полезные штуки есть для такой работы.
 

shadow1975

Новичок
aleks_raiden, дело в том, что если я пишу, например,

PHP:
echo $node->get_attribute("content-type")."<br>";
echo $node->type."<br>";
echo $node->tagname."<br>";
то выводится:

text/plain
1
content-text


Т.е. вроде как должно работать. Но "контент" не выводит.
За ссылки на статьи буду признателен.
 

bkonst

.. хочется странного?...
Насколько я помню, у узла должны быть дети - текстовые узлы, которые и будут содержать "контент".
 

aleks_raiden

Новичок
ну раз в вашем примере испльзуется XPath, то может в нем проблема.

ссылки найти помогает поиск. навскид - есть в статьх на сайте целый раздел XML-технологии.
Остальное по типичному запросу:
http://www.google.com.ua/search?hl=ru&q=PHP+4++XML&meta=

http://www.opennet.ru/base/dev/dom_xml_php.txt.html
http://www.php.net/domxml
http://xmlhack.ru/archives/2004/04/000017.html
http://keithdevens.com/software/phpxml
http://providerz.ru/articles/php/xml-sax-dom-intro.html
 

shadow1975

Новичок
bkonst, aleks_raiden, Спасибо.

Я вот думаю: может плюнуть и просто регулярными выражениями?.. Как Ваше мнение?
 

Wicked

Новичок
Автор оригинала: shadow1975
Я вот думаю: может плюнуть и просто регулярными выражениями?.. Как Ваше мнение?
Отставить регулярные выражения. С xml нужно работать средствами для работы с xml.
 

bkonst

.. хочется странного?...
Сам думай. Мы как-то не в курсе твоих задач, чтобы давать такие советы.
~
Хотя, с моей точки зрения, Wicked правильно сказал. ;)
 

Wicked

Новичок
shadow1975
xml-запрос, посланный методом POST?
и для начала следует уточнить, не имеется ли в виду xml-запрос, посланный методом POST именно в content-type: text/xml, а не в www-form-urlencoded или multipart/form-data.
 

shadow1975

Новичок
Wicked, передается text/xml.


Я туплю. Если POST-данные посылаются из формы - это понятно. А если просто в теле POST-запроса - то где они оказываются?..
 

Wicked

Новичок
воот :)

1) php://input (предпочтительнее)
2) $HTTP_RAW_POST_DATA

[off]
ЗЫ: вот он какой - мой 1000й пост :)
[/off]
 
Сверху