Skip to main content
 首页 » 编程设计

python之排序 XML 文件

2025年05月04日19zhengyun_ustc

是否可以像下面这样对 XML 文件进行排序:

<model name="ford"> 
<driver>Bob</driver> 
<driver>Alice</driver> 
</model> 
 
<model name="audi"> 
<driver>Carly</driver> 
<driver>Dean</driver> 
</model> 

会变成

<model name="audi"> 
<driver>Carly</driver> 
<driver>Dean</driver> 
</model> 
 
<model name="ford"> 
<driver>Alice</driver> 
<driver>Bob</driver> 
</model> 

也就是说,最外层的元素先排序,然后是第二外层的,依此类推。

它们需要先按元素名称排序。

请您参考如下方法:

这是对 Kirill 解决方案的改进,我认为它更好地反射(reflect)了规定的要求,并且它避免了 XSLT 2.0 在排序键包含多个值时会给您的类型错误(但它仍然适用于 1.0)。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:output method="xml" /> 
 
  <xsl:template match="*"> 
    <xsl:copy> 
    <xsl:copy-of select="@*"/> 
    <xsl:apply-templates select="*"> 
      <xsl:sort select="(@name | text())[1]"/> 
    </xsl:apply-templates> 
    </xsl:copy> 
  </xsl:template> 
 
</xsl:stylesheet>