这将排序并写入输出:
import xml.etree.ElementTree as ET
tree = ET.parse("in.xml")
def getkey(elem):
# Used for sorting elements by @LIN.
# returns a tuple of ints from the exploded @LIN value
# '1.0' -> (1,0)
# '1.0.1' -> (1,0,1)
return float(elem.get('LIN'))
container = tree.find("PurchaseOrder/LineItems")
container[:] = sorted(container, key=getkey)
tree.write("new.xml")
或使用您自己的代码进行打印:
import xml.etree.ElementTree as ET
tree = ET.fromstring(xml_str)
def getkey(elem):
# Used for sorting elements by @LIN.
# returns a tuple of ints from the exploded @LIN value
# '1.0' -> (1,0)
# '1.0.1' -> (1,0,1)
return float(elem.get('LIN'))
root = etree.fromstring(xml_str)
lines = root.find("PurchaseOrder/LineItems")
lines[:] = sorted(lines, key=getkey)
输出:
In [12]: print (etree.tostring(root, pretty_print=True))
关键是root.find(“PurchaseOrder / LineItems”),你想要找到LineItems元素并对其进行排序.