原始XML文本:
<a>
<ccc />
<bb></bb>
<d>
<ff />
<eee />
</d>
</a>
排序后,应该是:
<a>
<bb />
<ccc />
<d>
<eee />
<ff />
</d>
</a>
如果您知道一个很好的方法,请告诉我。谢谢!
答案 0 :(得分: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>