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