Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from xml.dom import minidom
data = '''<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.5" generator="OpenStreetMap server">
<bounds minlat="53.56382" minlon="9.98806" maxlat="53.56979" maxlon="9.99833"/>
<node id="254323278" lat="53.5639264" lon="9.9928837" user="FrankT" visible="true" timestamp="2008-03-27T19:31:52+00:00">
<tag k="created_by" v="JOSM"/>
<tag k="amenity" v="parking"/>
</node>
<node id="297307812" lat="53.5665602" lon="9.9885107" user="Divjo" visible="true" timestamp="2008-09-15T20:02:46+01:00"/>
<node id="300092980" lat="53.5649066" lon="9.9891504" user="Stephan Schildberg" visible="true" timestamp="2008-09-26T19:55:20+01:00"/>
<node id="283584342" lat="53.5643298" lon="9.994464" user="Zirbe" visible="true" timestamp="2008-08-05T11:22:30+01:00">
<tag k="name" v="Fontenay"/>
<tag k="highway" v="bus_stop"/>
</node>
<node id="21112777" lat="53.5664708" lon="9.9907035" user="Stephan Schildberg" visible="true" timestamp="2007-12-23T00:05:32+00:00">
<tag k="created_by" v="JOSM"/>
</node>
</osm>'''
data = minidom.parseString(data)
nodes = data.getElementsByTagName('node')
for node in nodes:
[node.removeChild(tag) for tag in node.getElementsByTagName('tag')]
data = data.toxml().split('\n')
for line in data:
if '<' in line:
print line
- Wenn ich aus den 'node' alle 'tag' entfernt habe, bekomme ich nicht <node ... />-Elemente sondern leere <node>...</node>. Ist aber glaube ich kein sauberes XML - ??? -, kann ich das ändern? (Ohne workaround...)
- Wenn ich statt dem in Zeilen 30-33 einfach print data.toxml() verwende, bekomme ich leere Zeilen angezeigt. Kann ich das verhindern?
- Gibt es auch eine Methode mit der ich die bearbeiteten Daten gleich wieder zurückschreiben kann. (Ich hab die nicht gefunden, kann mir aber nicht vorstellen, dass sie nicht da ist.)