将XML标记按字母顺序排序

将XML标记按字母顺序排序,xml,Xml,有人知道我可以将XML文件加载到其中并对其进行排序,然后保存该文件的方法吗 我有一个带有一系列设置的xml文件。。现在管理起来越来越困难,因为它们没有任何自然的排序顺序 e、 g 排序到: <display_screen> <edit_screen_a> <edit_screen_b> <settings_font_name> <settings_font_size> 您可以使用Python脚本执行此操作-请参阅: 例如,您可以

有人知道我可以将XML文件加载到其中并对其进行排序,然后保存该文件的方法吗

我有一个带有一系列设置的xml文件。。现在管理起来越来越困难,因为它们没有任何自然的排序顺序

e、 g


排序到:

<display_screen>
<edit_screen_a>
<edit_screen_b>
<settings_font_name>
<settings_font_size>

您可以使用Python脚本执行此操作-请参阅:


例如,您可以使用XSLT并从命令行运行它。(我会推荐,但也可以。)

这里有一个例子

XML输入

<doc>
  <edit_screen_a/>
  <settings_font_size/>
  <edit_screen_b/>
  <display_screen/>
  <settings_font_name/>
</doc>
<doc>
   <display_screen/>
   <edit_screen_a/>
   <edit_screen_b/>
   <settings_font_name/>
   <settings_font_size/>
</doc>

XSLT1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="doc">
    <doc>
      <xsl:apply-templates>
        <xsl:sort select="name()"/>
      </xsl:apply-templates>      
    </doc>
  </xsl:template>

</xsl:stylesheet>

XML输出

<doc>
  <edit_screen_a/>
  <settings_font_size/>
  <edit_screen_b/>
  <display_screen/>
  <settings_font_name/>
</doc>
<doc>
   <display_screen/>
   <edit_screen_a/>
   <edit_screen_b/>
   <settings_font_name/>
   <settings_font_size/>
</doc>


您使用的是什么操作系统?您希望使用什么语言/库?OS X。。。使用Eclipse。。。发现下面被接受的答案非常适合我的需求!我把这个xsl文件放到Eclipse中,只需按“run”并选择我的源xml,瞧。。。几乎完美。。。只需要在Eclipse中选择“格式”就可以很好地再次缩进它。。。谢谢,这真的是一个很好的解决这个问题的方法。我的记忆(不是最好的)似乎同意我的评论,那就是它以前对我很好。。。但现在它似乎排序不太好。。。可能是因为我在这个xml源文件中添加了XSLT文件不喜欢的内容。。。我经常更新源文件,因为它是我的程序用于本地化的字符串集合。知道什么样的事情会导致这个XSLT文件排序不正确吗?@ycomp-如果没有排序不正确的例子,很难说。如果你用一个更新的例子来更新这个问题,我可以看一看。没关系,我只是想知道你脑子里有没有关于多层次xml文件的知识……我也会问同样的问题-->这很好,你可以在记事本++中使用它作为插件。