2011-11-10 211 views
1

原始XML文本:PHP代碼按字母順序對XML標籤進行排序?

<a> 
    <ccc /> 
    <bb></bb> 
    <d> 
    <ff /> 
    <eee /> 
    </d> 
</a> 

後排序,應該是:

<a> 
    <bb /> 
    <ccc /> 
    <d> 
    <eee /> 
    <ff /> 
    </d> 
</a> 

如果你知道一個很好的辦法做到這一點,請告訴我。謝謝!

+0

@abhinav它在C#雖然 –

+0

http://stackoverflow.com/questions/1359224/sort-xml-via-attribute-value-php – Mob

+0

@NamGiVU對不起,刪除。 – abhinav

回答

3

可以完成例如通過php's XSL module

<?php 
$xsl = new XSLTProcessor(); 
$xsl->importStyleSheet(getDoc(getStylesheetData())); 
$doc = getDoc(getDocData()); 
echo $xsl->transformToXML($doc); 

function getDoc($s) { 
    $doc = new DOMDocument; 
    $doc->loadxml($s); 
    return $doc; 
} 

function getStylesheetData() { 
    return <<< eox 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/> 
<xsl:strip-space elements="*" /> 
<xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates select="node()"> 
      <xsl:sort select="name()"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 
eox; 
} 


function getDocData() { 
    return <<< eox 
<a> 
    <ccc /> 
    <bb></bb> 
    <d> 
     <ff /> 
     <eee /> 
    </d> 
</a> 
eox; 
} 

打印

<?xml version="1.0" encoding="iso-8859-1"?> 
<a> 
    <bb/> 
    <ccc/> 
    <d> 
    <eee/> 
    <ff/> 
    </d> 
</a> 
+0

完美答案!謝謝你,VolkerK –

相關問題