Domanda

Voglio essere in grado di fare qualcosa di simile

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

e ottenere un qualcosa di output come

<a3>Some value</a3>

Importante: e io voglio essere in grado di sostituire l'uscita a a1.a2.a3 in modo da utilizzare discendenti è fuori discussione. : (

Quindi è fondamentalmente la capacità di interrogazione chiamata xml nella stringa. C'è un modo per fare questo. Solo un suggerimento sarebbe super, posso farlo se ho un po 'di vantaggio temporale.

Grazie!


Credo di avere trovato una soluzione con l'aiuto da questo link:

  

Aggiornamento di ActionScript xml oggetto direttamente in una linea usando 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;
        }

È possibile chiamare in questo modo:

updateXml(xmlHold, "words.exercise", sortedXmlList, true);
È stato utile?

Soluzione

Sono troppo pigro per codice e testarlo, ma di qui idea:

  • Rompere la query su parti "a1.a2.a3".split(".")
  • Vai sulle parti, chiamando xml.elements(parts[i]) (avrete bisogno di più (funzione forse annidata) per le chiamate ricorsive)
  • Se si ottiene XMLList non vuoto, ripetere chiamando elements in tale elenco utilizzando parte successiva.
  • Nella parte finale, il testo estratto da esso con children()[0].
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top