如何根据属性值对xml进行排序

时间:2013-02-22 13:03:04

标签: php xml

$books = new DOMDocument();
$books->load( 'books.xml' );
$id = $_GET['id'];  
$xml = '<?xml version="1.0" encoding="UTF-8"?>'; 
$xml .= '<results><course>'.$id.'</course>'; 
$xml .= '<books>';
$items = $books->getElementsByTagName("item");
foreach( $items as $item )
{ 
    $item_id = $item->getAttribute("id");
    if($id == $item_id){
      ....
    }
}
$xml .= '</books></results>'; 
header ("Content-Type:text/xml");
echo ($xml);

我上面的代码会返回给我:

<results>
   <course>1111</course>
   <books>
      <isbn id="0134582667" common="10" before="4" same="1" after="5" total="248"/>
      ..... 
   </books>
</results>

此页面包含以下错误:

  第12行第772行的

错误:只允许在   文档的开头下面是第一个页面的渲染   错误。

1 个答案:

答案 0 :(得分:0)

你可以把你的物品放到一个数组中,然后对数组进行排序,就像这样......

的books.xml

<?xml version="1.0"?>
<results>
   <course>1111</course>
   <books>
      <isbn id="0134582667" common="10" before="4" same="1" after="5" total="248">248</isbn>
      <isbn id="0134582667" common="10" before="4" same="1" after="5" total="3">3</isbn>
      <isbn id="0134582667" common="10" before="4" same="1" after="5" total="224">224</isbn>
      <isbn id="0134582667" common="10" before="4" same="1" after="5" total="25">25</isbn>
   </books>
</results>

test.php的

$books = new DOMDocument();
$books->load( 'books.xml' );
$items = $books->getElementsByTagName("isbn");

$nodeArray = array();
foreach ($items as $item) {
    $nodeArray[$item->getAttribute('total')] = $item;
}
ksort($nodeArray);

echo "<pre>". print_r($nodeArray, true) ."</pre>";