dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner
un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction
"CloneElment" suivante:
def CloneElment(fromElem, destRoot = None):
"""
fromElem est l'élément à cloner
destRoot est le parent du clone (nouvel élément obtenu par clonage); si None
alors le parent sera celui de l'élément à cloner.
L'opération de clonage est récursive afin de traiter toute la sous-arborescence
de l'élément à cloner.
"""
if destRoot == None:
fromRoot = ET.ElementTree(fromElem).getroot()
destRoot = fromRoot
destElem = destRoot.makeelement(fromElem.tag, fromElem.attrib)
destRoot.append(destElem)
destElem.text = fromElem.text
for e in fromElem.findall('*'):
CloneElement(e, destElem)
#
cette fonction marche bien uniquement dans le cas où le destRoot est fourni par
le contexte appelant.
Le problème concerne la détermination de l'élément parent d'un élément elem à
partir de lui-même, c.à.d à partir de ses methodes propres.
Pour ce faire, cette écriture "ET.ElementTree(fromElem).getroot()" s'est révélée
fausse car elle renvoie fromElem lui-même!
Pour l'instant, j'ai remédié à cela en transmettant le paramètre destRoot depuis
le contexte appelant. Mais si qqun a une piste, je suis preneur ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
moky
m.banaouas ha scritto:
bonjour,
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction "CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par véritable copie, et non par assignation comme d'habitude.
Laurent
m.banaouas ha scritto:
bonjour,
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner
un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction
"CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par
véritable copie, et non par assignation comme d'habitude.
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction "CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par véritable copie, et non par assignation comme d'habitude.
Laurent
m.banaouas
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element parent d'un element en interrogeant element lui-même, alors que nous disposons de moyens pour déterminer les elements fils de tout element.
moky a écrit :
m.banaouas ha scritto:
bonjour,
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction "CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par véritable copie, et non par assignation comme d'habitude.
Laurent
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element parent d'un
element en interrogeant element lui-même, alors que nous disposons de moyens
pour déterminer les elements fils de tout element.
moky a écrit :
m.banaouas ha scritto:
bonjour,
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin
de cloner
un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire
la fonction
"CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par
véritable copie, et non par assignation comme d'habitude.
mais il semble qu'il ne soit pas possible de déterminer l'element parent d'un element en interrogeant element lui-même, alors que nous disposons de moyens pour déterminer les elements fils de tout element.
moky a écrit :
m.banaouas ha scritto:
bonjour,
dans le cadre de l'utilisateion du module ElementTree, j'ai eu besoin de cloner un élément. N'ayant pas trouvé un tel outil, j'ai commencé à écrire la fonction "CloneElment" suivante:
La fonction copy.deepcopy() sert à ça, je crois. Ca copie un objet, par véritable copie, et non par assignation comme d'habitude.
Laurent
Fred Pacquier
"m.banaouas" said :
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element parent d'un element en interrogeant element lui-même, alors que nous disposons de moyens pour déterminer les elements fils de tout element.
BeautifulSoup est plus pratique pour ce genre de chose alors.
"m.banaouas" <banaouas.medialog@wanadoo.fr> said :
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element
parent d'un element en interrogeant element lui-même, alors que nous
disposons de moyens pour déterminer les elements fils de tout element.
BeautifulSoup est plus pratique pour ce genre de chose alors.
mais il semble qu'il ne soit pas possible de déterminer l'element parent d'un element en interrogeant element lui-même, alors que nous disposons de moyens pour déterminer les elements fils de tout element.
BeautifulSoup est plus pratique pour ce genre de chose alors.
olive
On Feb 2, 4:40 pm, "m.banaouas" wrote:
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element paren t d'un element en interrogeant element lui-même, alors que nous disposons de m oyens pour déterminer les elements fils de tout element.
Je te conseil LXML qui est conforme à l'API de ET mais qui apporte beaucoup plus de choses, dont l'accès au parent.
On Feb 2, 4:40 pm, "m.banaouas" <banaouas.media...@wanadoo.fr> wrote:
ok pour copy.deepcopy(), je vais regarder ...
mais il semble qu'il ne soit pas possible de déterminer l'element paren t d'un
element en interrogeant element lui-même, alors que nous disposons de m oyens
pour déterminer les elements fils de tout element.
Je te conseil LXML qui est conforme à l'API de ET mais qui apporte
beaucoup plus de choses, dont l'accès au parent.
mais il semble qu'il ne soit pas possible de déterminer l'element paren t d'un element en interrogeant element lui-même, alors que nous disposons de m oyens pour déterminer les elements fils de tout element.
Je te conseil LXML qui est conforme à l'API de ET mais qui apporte beaucoup plus de choses, dont l'accès au parent.