用PHP排序XML,返回JSON
我想知道有没有更好的办法。我从提要中读取XML,对节点进行排序(因为创建它的人不能…),然后作为JSON返回(因为这是一个AJAX调用,用JavaScript解析XML很糟糕) 我一直在使用Nev Stokes在上找到的很棒的xsort函数,但当json编码排序后的XML时遇到了一个问题(并没有返回到JavaScript作为json),我认为这是从xpath中深入到“作业”的问题 我绕着它走的感觉很脏,所以我想知道是否有更好的解决办法。我发现打印json_encode($xml)与json_encode($jobs)的不同之处在于$jobs字符串需要一个“{”Job:[xxx]}”包装器,所以我只是将这些东西连接在一起,它就工作了。。。但是感觉很不对 我的PHP代码如下;我很想知道是否有人有更优雅的解决方案用PHP排序XML,返回JSON,php,xml,json,sorting,xpath,Php,Xml,Json,Sorting,Xpath,我想知道有没有更好的办法。我从提要中读取XML,对节点进行排序(因为创建它的人不能…),然后作为JSON返回(因为这是一个AJAX调用,用JavaScript解析XML很糟糕) 我一直在使用Nev Stokes在上找到的很棒的xsort函数,但当json编码排序后的XML时遇到了一个问题(并没有返回到JavaScript作为json),我认为这是从xpath中深入到“作业”的问题 我绕着它走的感觉很脏,所以我想知道是否有更好的解决办法。我发现打印json_encode($xml)与json_en
// curls in rss feed
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://overdriveinteractive.applicantstack.com/feed/jobs");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
// loads xml
$xml = simplexml_load_string($output, 'SimpleXMLElement', LIBXML_NOCDATA);
// adds timestamp date field for sorting
foreach($xml->Job as $job) {
$job->addChild('date', strtotime($job->DateCreated));
}
// sorts xml
$jobs = $xml->xpath('/Openings/Job');
xsort($jobs, 'date', SORT_DESC);
echo '{"Job":' . json_encode($jobs) . '}';
function xsort(&$nodes, $child_name, $order=SORT_ASC) {
$sort_proxy = array();
foreach ($nodes as $k => $node) {
$sort_proxy[$k] = (string) $node->$child_name;
}
array_multisort($sort_proxy, $order, $nodes);
}
这应该起作用:
json_encode(array("Job" => $jobs));