正在按名称标签的字母顺序对 xml 文件进行排序
Sorting xml file alphabetically by name tag
我有几个大的 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>
我有几个大的 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>