J'utilise DOM4J pour détacher un nœud, comme ci-dessous:DOM4J noeud Détacher, Jython
<div name="divName">
Some Text Here
<span>Some Text Here</span>
</div>
Je sélectionnant le nœud div par nom, puis en utilisant la méthode Détacher pour le supprimer:
xpathValue = "//*[contains(@name, 'divName')]"
xpath = dom.createXPath(xpathValue)
if xpath != None:
nodes = xpath.selectNodes(dom)
if len(nodes) > 0:
for node in nodes:
node.detach()
Cela semble supprimer la div fine, j'ai remarqué qu'il supprime également les éléments et le texte dans ce div également. Ce que je cherche à achive est de retirer la div sans enlever les éléments et le texte à l'intérieur du div, ce qui suit:
Some Text Here
<span>Some Text Here</span>
Est-il possible de cela avec dom4j achive? Si pas de suggestions sur la façon de s'y prendre?
Vive
Eef
Mise à jour:
@alamar
J'achived ce que je voulais en prenant votre code et de modifier un peu ce qui est ce que je suis venu avec:
xpathValue = "//*[contains(@name, 'divName')]"
xpath = dom.createXPath(xpathValue)
if xpath != None:
nodes = xpath.selectNodes(dom)
if len(nodes) > 0:
for node in nodes:
parent = node.getParent()
nodeContents = node.content()
if len(nodeContents) > 0:
for subNode in nodeContents:
parent.add(subNode.clone().detach())
node.detach()
Cela semble fonctionner, mais ajoute les noeuds à la fin du nœud parent dans la situation ci-dessous:
<div name="parent">
<div name="divName">
Some Text Here
<span>Some Text Here</span>
</div>
<div name="keep"></div>
</div>
Le résultat est le suivant:
<div name="parent">
<div name="keep"></div>
Some Text Here
<span>Some Text Here</span>
</div>
J'essaie de comprendre comment obtenir le contenu du nœud supprimé doit rester dans sa position d'origine, avant le div appelé "keep", au lieu d'être ajouté après le div avec le nom "keep". J'ai essayé quelques trucs mais je ne peux pas sembler achive ceci, quelqu'un pourrait-il m'aider?
Eef