* Olе Streicher wrote:
Das ist schon klar. Mein Problem ist aber Minidom:
for c in f.childNodes if c.localName == 'header': for p in c.childNodes if p.localName == 'property': print('%s = %s' % (p.getAttribute('name'), p.getAttribute('value')))
was in dieser Form leichtverständlich ist, aber ohne den syntaktischen Zucker eben deutlich schwerer nachvollziehbar.
ich baue mir bei sowas gerne lokale Mini-Funktionen, die die Semantik besser abbilden. Durch die Lokalität bleibt auch das Gesamtbild erhalten und der globale Namensraum wird nicht gestört. def children(node, which): # Einzeiler: return (child for child in node.childNodes if child.localName == which) # ODER # ich neige allerdings zu for-schleifen mir yield. # vertikal ist netter: for child in node.childNodes: if child.localName == which: yield child for header in children(f, 'header'): for prop in children(header, 'property'): # dosomething nd -- die (eval q-qq[Just Another Perl Hacker ] ;-) # André Malo, <http://www.perlig.de/> #