PDA

Просмотр полной версии : Как распарсить xml из флеша в php


grafillo!
01.01.2015, 22:33
Столкнулся с проблемой которую не могу никак решить, передаю из флеша в php xml
function SendBotsUser(){
var vars:URLVariables = new URLVariables();
vars['type']=['add_bots'];
vars['xml']='<xml><bot login="BOT2" select_room="гогого" id_unreg_user="">SharaBot</bot></xml>';
var requestmes:URLRequest = new URLRequest;

requestmes.url = "http://troll_ch/bots.php";

requestmes.method = URLRequestMethod.POST;
requestmes.data = vars;
sendToURL(requestmes);
}
и не могу никак его распарсить в php, знатоки php помогите с парсингом
function pars_xml () {
$servertime = time();
$req = $_POST['xml'];


//mysql_query("INSERT INTO tb_room SET Login='$req',Time='$servertime',user_type='unregistered',Room='$select_room' ");
//$req = '<xml><bot login="BOT2" select_room="гогого" id_unreg_user="">SharaBot</bot></xml>';
$xml = new SimpleXmlIterator ($req);
foreach ($xml as $bot)
{
$select_room = $bot['select_room'];
$login = $bot['login'];

mysql_query("INSERT INTO tb_room SET Login='$bot',Time='$servertime',user_type='unregistered',Room='$select_room' ");


}

}
Самый прикол в том что если есть атрибуты, то оно не парсится, без атрибутов всё работает нормально, также всё передаётся, если просто вставить строку в таблицу то вставляет норм xml который я передавал. Есть знатоки php помогите плиз?

Korchy
02.01.2015, 10:54
Я обычно через DOMDocumetn с XML-ем в php работаю.

$currXml = new DOMDocument();
$currXml->loadXML($textSource); // ну и далее уже как обычным xml-ем

bifidokk
04.01.2015, 10:40
либо http://php.net/manual/ru/book.simplexml.php

grafillo!
04.01.2015, 17:12
пишу такой код
$req = $_POST['xml'];
$xml = new SimpleXMLElement($req);
и вот эта строчка не работает: $xml = new SimpleXMLElement($req);
может надо както создать xml, причём она не рабоатет только когда передаю xml методом пост х)

Добавлено через 6 часов 14 минут
Я обычно через DOMDocumetn с XML-ем в php работаю.

$currXml = new DOMDocument();
$currXml->loadXML($textSource); // ну и далее уже как обычным xml-ем

а как распарсить мою xml с помощью DOMDocument?

bifidokk
05.01.2015, 10:52
может потому что у вас в этот момент в $_POST['xml'] ничего нет?

Korchy
05.01.2015, 11:09
а как распарсить мою xml с помощью DOMDocument?

При использовании loadXml из текста уже распарсивается xml. Что именно нужно - смотри документацию.

http://php.net/manual/ru/class.domdocument.php

Например пробег по узлам будет выглядить как-то так:

$U = new DOMDocument();
$U->loadXML($text);
foreach($U->firstChild->childNodes as $Node) {
echo $Node->nodeValue;
}

grafillo!
05.01.2015, 11:36
может потому что у вас в этот момент в $_POST['xml'] ничего нет?
нет не пустой я проверял всё норм передаётся

Добавлено через 30 секунд
При использовании loadXml из текста уже распарсивается xml. Что именно нужно - смотри документацию.

http://php.net/manual/ru/class.domdocument.php

Например пробег по узлам будет выглядить как-то так:

$U = new DOMDocument();
$U->loadXML($text);
foreach($U->firstChild->childNodes as $Node) {
echo $Node->nodeValue;
}

а как пройтись по атрибутам?

Korchy
05.01.2015, 12:29
а как пройтись по атрибутам?

Ну все же есть в документации.

foreach($node->attributes as $attr) {
echo attr->nodeValue;
}