2016-09-09 3 views
0

Ich versuche, ein XML mit Python und Etree zu machen. Jetzt möchte ich die XML vor dem Auswringen sortieren. Ist das möglich, und wenn ja, wie?Sortieren Etree vor dem Schreiben

objm = json.loads(response.text) 

newRoot = ET.Element("root") 
tree = ET.ElementTree(newRoot) 
i=0 
while i < len(objm): 
    newItem = ET.Subelement(newRoot, "item") 
    Start_date = datetime.strptime(objm[i]['Start_date'], '%Y-%m-%d %H:%M:%S') 
    if (Start_date.date() == datetime.today().date()): 
     ET.SubElement(newItem, "Start_date").text = Start_date.strftime("%H:%M") 
    ET.SubElement(newItem, "location").text = objm[i]['location'] 
    i = i+1 

##Some sorting on Start_date should be done here## 

try: 
    tree.write(os.path.join(tempfile.gettempdir(), "filename.xml")) 
except Exception,e: 
    print str(e) 

Antwort

0

die Lösung gefunden:

objm = json.loads(response.text) 

objm = sorted(objm, key=lambda k: k.get('Start_date', 0), reverse=False) 

newRoot = ET.Element("root") 
tree = ET.ElementTree(newRoot) 
i=0 
while i < len(objm): 
    newItem = ET.Subelement(newRoot, "item") 
    Start_date = datetime.strptime(objm[i]['Start_date'], '%Y-%m-%d %H:%M:%S') 
    if (Start_date.date() == datetime.today().date()): 
     ET.SubElement(newItem, "Start_date").text =  Start_date.strftime("%H:%M") 
    ET.SubElement(newItem, "location").text = objm[i]['location'] 
    i = i+1 

try: 
    tree.write(os.path.join(tempfile.gettempdir(), "filename.xml")) 
except Exception,e: 
    print str(e) 
Verwandte Themen