У меня есть несколько больших файлов xml в следующем формате:
<item>
<name>Name 1</name>
<info>Details 1</info>
</item>
<item>
<name>Name 3</name>
<info>Details 3</info>
</item>
<item>
<name>Name 2</name>
<info>Details 2</info>
</item>
Со временем добавления к ним он стал уродливым. Я хотел бы отсортировать их в алфавитном порядке по именным тегам. Я искал здесь и нашел несколько разных скриптов Python, но они не работали для меня. Вот один из примеров того, что я пробовал:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
container = tree.find("item")
data = []
for elem in container:
key = elem.findtext("name")
data.append((key, elem))
data.sort()
container[:] = [item[-1] for item in data]
tree.write("test-out.xml")
print "File Written"
Спасибо за любую помощь





Для такого рода работы вам действительно необходимо иметь в своем наборе инструментов XQuery или XSLT.
В XQuery:
<items>{
for $i in //item order by $i/name return $i
}</items>
В XSLT (1.0 или новее):
<items xsl:version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:for-each select = "//item">
<xsl:sort select = "name"/>
<xsl:copy-of select = "."/>
</xsl:for-each>
</items>