Добрый день. Есть функция которая обрабатывает xml фаил, записывает его в массив и переводит в JSON формат. Нашел я ее на просторах интернета, она прекрасно работает, вот она: PHP: function xml2js($xmlnode) { $root = (func_num_args() > 1 ? false : true); $jsnode = array(); if (!$root) { if (count($xmlnode->attributes()) > 0){ $jsnode["$"] = array(); foreach($xmlnode->attributes() as $key => $value) $jsnode["$"][$key] = (string)$value; } $textcontent = trim((string)$xmlnode); if (count($textcontent) > 0) $jsnode["_"] = $textcontent; foreach ($xmlnode->children() as $childxmlnode) { $childname = $childxmlnode->getName(); if (!array_key_exists($childname, $jsnode)) $jsnode[$childname] = array(); array_push($jsnode[$childname], xml2js($childxmlnode, true)); } return $jsnode; } else { $nodename = $xmlnode->getName(); $jsnode[$nodename] = array(); array_push($jsnode[$nodename], xml2js($xmlnode, true)); return json_encode($jsnode); } } $db = simplexml_load_file("file.xml"); echo xml2js($db); Вопрос такой, как одновременно обработать например 2 xml файла с абсолютно одинаковой структурой, например такой: Код (Text): <?xml version="1.0" ?> <states> <state> <name>Alabama</name> </state> <state> <name>Alaska</name> </state> </states> Как то так может можно сделать: PHP: function xml2js($xml1, $xml2) { //обрабатываем } $db = simplexml_load_file("file1.xml"); $db2 = simplexml_load_file("file2.xml"); echo xml2js($db, $db2); Может кто сталкивался?
PHP: $db = simplexml_load_file("file1.xml"); $db2 = simplexml_load_file("file2.xml"); $xml1 = xml2js($db); $xml2 = xml2js($db2); echo $xml1; echo $xml2
@nospiou Я это принимаю так: Код (Javascript): $.ajax({ type: 'ajax', url: url, dataType: 'json', success: function(data){ console.log(data); } }); Поэтому 2 echo не работает =(
PHP: return json_encode($jsnode); замени на return $jsnode; $res['xml1'] = xml2js($db); $res['xml2'] = xml2js($db2); echo json_encode($res);
@nospiou Спасибо большое, все получилось. Смеха ради как я решил проблему говнокодом: в php PHP: if(@$_POST['num'] == 1) { echo xml2js($db); } else if(@$_POST['num'] == 2) { echo xml2js($db2); } else if(@$_POST['num'] == 3) { echo xml2js($db3); } Отправлял запрос так: Код (Javascript): $.post("p.php", { num: "1"}) .done(function(data) { data = JSON.parse(data); array[0]= data }); $.post("p.php", { num: "2"}) .done(function(data) { data = JSON.parse(data); array[1] = data; }); $.post("p.php", { num: "3"}) .done(function(data) { data = JSON.parse(data); array[2] = data; });
чем тебя обычный вариант не устроил? PHP: $res['xml1'] = simplexml_load_string($xml1); $res['xml2'] = simplexml_load_string($xml2); echo json_encode($res);