如何解决如何按子元素对XML排序?
我正在使用Python使用ElementTree解析xml数据。我有需要按子元素值排序的xml数据。下面我有xml数据。我需要按子元素“时间”对完整的节点“ TheSong”进行排序,希望它们从最短时间到最高时间排序。我不确定如何执行此操作,但是我已经完成了以下操作来解析xml数据
func viewDidLoad() {
super.viewDidLoad()
let tapRecognizer = UITapGestureRecognizer(target: self,action: #selector(mapViewDidTap(_:)))
mapView.addGestureRecognizer(tapRecognizer)
...
}
func mapViewDidTap(_ tapRecognizer: UITapGestureRecognizer) {
if tapRecognizer.state == .recognized {
// Get map coordinate from touch point
let touchCoord = tapRecognizer.location(in: mapView)
let coord = mapView.convert(touchCoord,toCoordinateFrom: mapView)
let coordRect = MKMapRect(origin: coord,size: MKMapSize())
// for every overlay ...
for overlay in mapView.overlays {
// .. if MyPolygon ...
if let polygon = overlay as? MyPolygon {
let selected = polygon.intersects(coordRect)
if polygon.selected != selected {
polygon.selected = selected
mapView.renderer(for: polygon)?.setNeedsDisplay()
}
}
}
}
}
import xml.etree.ElementTree as ET
tree = ET.parse('songs.xml')
root = tree.getroot()
for child in root:
//My task
print("Everything in correct order")
输出应以此顺序
<Songs>
<Songs>
<TheSong Id="0">
<LomId Value="0"/>
<Time Value="36"/>
<Name Value="Intro"/>
<Annotation Value=""/>
<IsSongStart Value="false"/>
</TheSong>
<TheSong Id="1">
<LomId Value="0"/>
<Time Value="4"/>
<Name Value="Vamp"/>
<Annotation Value=""/>
<IsSongStart Value="false"/>
</TheSong>
<TheSong Id="2">
<LomId Value="0"/>
<Time Value="12"/>
<Name Value="Verse"/>
<Annotation Value=""/>
<IsSongStart Value="false"/>
</TheSong>
<TheSong Id="3">
<LomId Value="0"/>
<Time Value="0"/>
<Name Value="Chous"/>
<Annotation Value=""/>
<IsSongStart Value="false"/>
</TheSong>
<TheSong Id="4">
<LomId Value="0"/>
<Time Value="30"/>
<Name Value="ending"/>
<Annotation Value=""/>
<IsSongStart Value="false"/>
</TheSong>
</Songs>
</Songs>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。