ich bin der Author von http://www.dd4kids.de einer Webseite, die sich der Beschreibung sämlicher Spielplätze in Dresden verschrieben hat. Alle meine Artikel sind mit Geokoordinaten versehen, woraus ich nun eine kml-datei zur Anzeige in Google Earth erzeugen will. Ich habe dazu einige gute Beispiele im Netz gefunden, aber nun bin ich an einer Stelle, an der ich nicht weiterkomme: Ich möchte die xml Ausgabe sortieren bzw. stukturieren.
Ich habe zunächst mittels eine scripts eine CSV-Datei erzeugt, die so aussieht:
Code: Alles auswählen
GroupA, Name1
GroupA, Name2
GroupB, Name3
GroupC, Name4
GroupA, Name5
...
Code: Alles auswählen
<Document>
<Placemark>Name1</Placemark>
<Placemark>Name2</Placemark>
<Placemark>Name3</Placemark>
<Placemark>Name4</Placemark>
...
</Document>
Code: Alles auswählen
<Document>
<Folder id="GroupA">
<Placemark>Name1</Placemark>
<Placemark>Name2</Placemark>
<Placemark>Name5</Placemark>
</Folder>
<Folder id="GroupB">
<Placemark>Name3</Placemark>
</Folder>
<Folder id="GroupC">
<Placemark>Name4</Placemark>
...
</Folder>
</Document>
Code: Alles auswählen
import urllib2, genshi
from genshi.template import TemplateLoader
def collect_items():
f = urllib2.urlopen('file:csv.txt')
for line in f:
fields = line.split(',')
group1 = fields[0]
name1 = fields[1]
yield {
'group': group1,
'name': name1,
}
loader = TemplateLoader(['.'])
template = loader.load('template.xml')
stream = template.generate(collection=collect_items())
f = open('output.kml', 'w')
f.write(stream.render())
Code: Alles auswählen
<xml>
<Document>
<Placemark py:for="item in collection">
<name py:content="item['name']">NAME</name>
</Placemark>
</Document>
</xml>
Gruße aus Dresden
konus