2016-03-17 1 views
0

Je travaille sur un projet as3 dans lequel j'utilise XML.Je suis confronté à un problème lorsque je copie un objet xml dans un autre (newxml = oldxml) le texte est copié mais si je supprime un nœud de oldxml Il supprime automatiquement ce noeud de la variable copiée (newxml).Impossible de copier Xml as3

code

pour le noeud suppression:

for each(node in xmlold.links.slidelink.(@displaytext.toLowerCase().indexOf(this.searchbar.text.toLowerCase())<0)) 
{ 

var index = node.childIndex(); 



    delete xmlold.links.slidelink[index]; 
    } 

    this.display.text=xmlnew.toString(); 

Maintenant, quand j'afficher du texte si "xmlnew" Il me donne la sortie texte après suppression qui n'est pas nécessaire

Xml Ressemblez:

<outline xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <links> 
    <slidelink slideid="_player" displaytext="Headd" <slidelink slideid="5pnZ9Eziqq4" displaytext="Relationship" expand="true" type="slide"/> 
    <slidelink slideid="vgVg68B" displaytext="Temperature Relationship" expand="true" type="slide"/> 
    <slidelink slideid="_player" displaytext="Viscosity" expand="true" type="slide"/> 
    </links> 
</outline> 

S'il vous plaît vérifier le problème Votre aide sera vraiment apprécié merci

+0

'newxml = oldxml' ne copie pas, il dit simplement "** newxml est la même chose que oldxml **" ... vous avez besoin quelque chose comme' newxml = new XML (oldxml); '. Vous pouvez vérifier google ou le manuel AS3 sur la façon de passer les données oldxml dans newxml mais comme point de départ, essayez 'var newxml: XML = nouveau XML (oldxml.toXMLString());' et résoudre tous les problèmes à partir de là –

+0

Merci pour votre suggestion, mais cela ne fonctionne pas bien m'aider –

+0

Résolu! votre tour a fait la magie Great Vc one.Thank vous beaucoup.Je suis nouveau ici pouvez-vous me dire comment marquer votre réponse comme corrigée. Merci encore une fois :) –

Répondre

0

newxml=oldxml ne copie pas, il dit simplement "newxml est la même chose que oldxml".

Vous avez besoin quelque chose comme newxml = new XML (oldxml);

Comme un essai de point de départ:

var newxml : XML = new XML (oldxml.toXMLString()); 
+0

Cela fonctionne, mais c'est inutilement cher. Convertir votre XML en une chaîne puis en analysant la chaîne en XML est très lent. Vous devriez juste utiliser XML 'copy()', qui est fourni dans l'API pour que vous n'ayez pas à * re-analyser le XML comme ceci. – Aaron

1

La meilleure façon de copier une structure XML est d'utiliser XML/copy(), ce qui est exactement ce qu'il est pour.

var newXML:XML = oldXML.copy(); 
+0

Merci pour suggestion, mais le problème est déjà résolu. Cette solution est bonne aussi. –

+0

Vous pouvez accepter n'importe quelle réponse, mais vous "devriez" utiliser 'copy()' pour copier XML. L'utilisation de 'new XML' entraînera une analyse coûteuse des chaînes, ce qui est très lent, ce qui explique pourquoi' 'copy()' 'XML' est fourni dans l'API. – Aaron

+0

D'où mon "Vous pouvez vérifier le manuel AS3 sur la façon de passer des données oldxml dans newxml mais comme un point de départ essayer ..." de toute façon donne le même résultat pour l'Asker. Vérifiez ** [toXMLString] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html#toXMLString()) ** comme vous pouvez le voir, il copie les données (complexes ou non) –