Question

Je veux être capable de faire quelque chose comme

var XMLquery:String = "a1.a2.a3";
var parserVal:XML = parserMethod(XMLquery);
// or
var parserVal:XMLList = parserMethod(XMLquery);`

et obtenir un quelque chose comme de sortie

<a3>Some value</a3>

Important: Et je veux être en mesure de remplacer la sortie à a1.a2.a3 pour l'aide descendants est hors de question. : (

Il est donc essentiellement la possibilité d'appeler requête xml dans la chaîne. Y a-t-il un moyen de faire cela. Juste un soupçon serait super, je peux le faire si je suis un peu la tête de démarrage.

Merci!


Je pense avoir trouvé une solution à l'aide de ce lien:

  

Mettre à jour une actionscript objet XML directement dans une ligne à l'aide e4x?

public static function updateXml(xml:XML, path:String, data:XMLList = null,update:Boolean = false,XmlListOnly:Boolean = false):* {
            var nodesArray:Array = path.split(".");
            var tempXML:XML = xml;
            var tempXMLCandidate:XML;
            var tagName:String;
            for (var i:int = 0; i < nodesArray.length; i++){
                tagName = nodesArray[i];
                if (i == nodesArray.length - 1){
                    if (data != null && update && !XmlListOnly){
                    tempXML[tagName] = data;
                    }else if (XmlListOnly){
                        return tempXML[tagName];
                    }else{
                    return tempXML[tagName].length();
                    }
                }else{
                    tempXMLCandidate = tempXML[tagName][0];
                    if (!tempXMLCandidate){
                        tempXML.appendChild(tempXMLCandidate);
                    }
                tempXML = tempXMLCandidate;
                }
            }
            return tempXML;
        }

Vous pouvez l'appeler comme ceci:

updateXml(xmlHold, "words.exercise", sortedXmlList, true);
Était-ce utile?

La solution

Je suis trop paresseux pour coder et tester, mais l'idée ici:

  • cassez votre requête sur les pièces "a1.a2.a3".split(".")
  • Allez sur les parties, appelant xml.elements(parts[i]) (vous aurez besoin fonction supplémentaire (peut-être imbriquée) pour les appels récursifs)
  • Si vous obtenez XMLList non vide, répétez l'appel elements sur cette liste en utilisant une partie suivante.
  • En dernière partie, le texte extrait avec children()[0].
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top