[Python-de] lxml und Namespaces

Stefan Behnel behnel_ml at gkec.informatik.tu-darmstadt.de
Die Jan 10 07:45:44 CET 2006


Andreas Pakulat schrieb:
> hab jetzt meine ersten Erfahrungen mit lxml gesammelt - so weit so gut.

Da habe ich aber von anderen schon entusiastischeres gehört. :)


> Aber das Namespace-Handling wirft doch noch eine Frage auf:
> 
> Wie kriege ich einen QName erzeugt? Um bestimmte Elemente oder
> aehnliches zu finden brauche ich ja einen QName, den koennte man
> natuerlich mit 
> 
> "{"+ns+"}element1"
> 
> an die Funktionen wie findall uebergeben, aber das find ich dann doch
> reichlich "haesslich".

Sollte genauso funktionieren wie in ElementTree. Also entweder das obige, oder
das gebräuchlichere

"{%s}element1" % ns

So funktioniert das nunmal.


> Auch wenn das nichts mit lxml zu tun hat: Wie setze ich eine Variable
> fuer ein Modul? Ich habs momentan in der __init__.py was aber bedeutet
> ich muss das Modul auch in allen Python-Dateien im Modul importieren.
> Nicht so schoen, ich haette gerne das die Variable "automatisch" in
> allen Pythondateien im Modul bekannt ist, geht das?

Dein Bezug auf __init__.py bedeutet wahrscheinlich, dass du das Package von
innerhalb seiner Module selbst importierst? Wirklich unschön. Nimm lieber ein
neues Modul _in_ dem Package, gib ihm einen vernünftigen Namen (notfalls
'common' oder 'constants'), und importier das, um an deine Werte zu kommen.

Stefan