2013-02-22 109 views
-2
$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); 

我上面的代码将返回我:如何根据属性值排序XML

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

此页面包含以下错误:

上线772错误,在第12列:XML声明只允许在 文档的开始处下面是页面的渲染,直到第一个 错误。

+0

排序在提出Stack Overflow的问题之前,请始终先Google,并因此占用您的同行用户的时间。 “PHP排序xml”的第一个结果包含完整答案。谢谢! – 2013-02-22 13:04:31

+0

[通过属性值PHP对XML进行排序]的可能重复(http://stackoverflow.com/questions/1359224/sort-xml-via-attribute-value-php) – 2013-02-22 13:05:00

+0

尝试解决方案已经不工作,这就是为什么在这里发布。 – user236501 2013-02-22 13:05:56

回答

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>";