2016-09-09 3 views
0

Я пытаюсь создать xml с python и etree. Теперь я хочу отсортировать xml, прежде чем выжать его. Возможно ли это, и если да, то как?Сортировка etree перед написанием

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) 

ответ

0

Найдено решение:

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) 
Смежные вопросы