0

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) 如何按标题或网址排序

4

1 回答 1

0

$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>";
}
?>
于 2013-08-02T16:32:33.907 回答