如何限制xpath,按.XML/PHP排序


How xpath limit, order by... XML/PHP

EX文件music.xml:

<musics>
   <music id="1">
      <title>Title 1</title>
      <url>music/1.mp3</url>
   </music>
   <music id="2">
      <title>Title 2</title>
      <url>music/2.mp3</url>
   </music>
   <music id="3">
      <title>Title 3</title>
      <url>music/3.mp3</url>
   </music>
   <music id="4">
      <title>Title 4</title>
      <url>music/4.mp3</url>
   </music>
</musics>


$xml = new SimpleXMLElement('music.xml', NULL, TRUE);
$result = $mxl->xpath('music');

如何选择LIMIT(X,Y)如何按标题或url 订购

$xml->xpath返回一个数组,因此您可以用它做任何您想做的事情。

你可以简单地创建自己的功能,这里有一个DEMO,

<?php
$xml = new SimpleXMLElement('music.xml', NULL, TRUE);
$result = $xml->xpath('music');
echoPre(limitXml($result, 0, 1), "Limited XML Result");
echoPre(sortXml($result, 'title', 'desc'), "Sorted XML Result");
function limitXml($array, $x, $y = 0) {
   return array_slice($array, $x, $x + $y - count($array));
}
function sortXml($array, $sortBy, $sortType = "asc") {
   if ($sortBy == "title")
      usort($array,'cmpTitle');
   else if ($sortBy == "url")
      usort($array,'cmpUrl');
   return ($sortType == 'desc') ? array_reverse($array) : $array;
}
function cmpTitle($a, $b) {
  return strcmp($a->title, $b->title);
}
function cmpUrl($a, $b) {
  return strcmp($a->url, $b->url);
}
function echoPre($el, $title) {
  echo "<h1>".$title."</h2><pre>";
  print_r($el);
  echo "</pre>";
}
?>