geordnete erzeugung von xml mit genshi
Verfasst: Freitag 4. Juli 2008, 21:55
Hallo,
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:
Bisher sieht meine Ausgabe so aus:
Mein Ziel ist eine Ausgabe in der folgenden Art:
Das script, welches die xml-Datei erzeugt, sieht so aus (Pfade gekürztDas (vereinfachte) Template dazu sieht so aus:Meine Frage ist nun, wie ich dieses Ziel erreichen kann?Ich bitte um Verzeihung, dass gleich mein erstes Posting Überlänge hat, ich wusste nicht, wie ich es kürzer beschreiben soll und mit der Forensuche habe ich nichts passendes entdeckt.
Gruße aus Dresden
konus
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