Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据属性值对xml进行排序_Php_Xml - Fatal编程技术网

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

Php 如何根据属性值对xml进行排序,php,xml,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 = $bo

上面的代码将返回给我:

$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);
此页面包含以下错误:

第12列第772行出错:仅允许在 下面文档的开头是页面到第一页的呈现 错误


您可以将项目放入一个数组,然后对数组进行排序,类似这样

books.xml

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

<?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>

在询问有关堆栈溢出的问题之前,请始终先用谷歌搜索,这样会占用其他用户的时间。php排序xml的第一个结果包含完整答案。谢谢可能重复尝试该解决方案已不起作用,这就是为什么在此处发布。然后添加该上下文并指定不起作用的内容。不要只问一份没有背景信息也没有参考原件的复制件。似乎是一份完全相同的复制件。看我的答案。
$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>";