2013-08-02 25 views
0

EX文件music.xml:如何XPath的限制,爲了通過... XML/PHP

<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'); 

如何選擇限(X,Y) 如何ORDER BY標題或url

回答

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>"; 
} 
?> 
+0

感謝!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! – tronghiep92