pyxml: verarbeiten eines xml

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
lunar

Zap hat geschrieben:
lunar hat geschrieben:Kindelementen. Außerdem erzeugt ".getchildren()" meines Wissens eine separate Liste, so dass man problemlos per ".remove()" aus dem Element entfernen kann.
Nein das macht ElementTree (zumindest das build-in von Python 2.5) nicht.

Code: Alles auswählen

In [83]: id(r._children)
Out[83]: 15341248

In [84]: id(r.getchildren())
Out[84]: 15341248
Gut, da habe ich etwas voreilig von lxml.etree auf die Standardbibliothek geschlossen. lxml.etree erzeugt nämlich eine separate Liste, deren Modifikation keine Auswirkungen auf den Tree hat:

Code: Alles auswählen

>>> parent.getchildren()
[<Element children at 1635838>, <Element children at 1635890>]
>>> parent.getchildren().pop()
<Element children at 1635890>
>>> parent.getchildren()
[<Element children at 1635838>, <Element children at 1635890>]
@BlackJack
Da kommt nicht das gleiche raus: Bei seinem Code ist das Ergebnis "<parent>Dies ist ein Text kind</parent>", in der interaktiven Sitzung allerdings "<parent>Dies ist ein Text mit kind</parent>".
Antworten