首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何限制xpath,通过.XML/PHP

如何限制xpath,通过.XML/PHP
EN

Stack Overflow用户
提问于 2013-08-02 15:02:37
回答 1查看 847关注 0票数 0

EX文件music.xml:

代码语言:javascript
复制
<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>
代码语言:javascript
复制
$xml = new SimpleXMLElement('music.xml', NULL, TRUE);
$result = $mxl->xpath('music');

如何选择限制(X,Y)按标题或网址排序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-02 16:32:33

$xml->xpath返回一个数组,因此您可以随心所欲地使用它。

您可以简单地创建您自己的函数,下面是一个演示,

代码语言:javascript
复制
<?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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18020188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档