Frage

Ich möchte in der Lage sein, etwas zu tun, wie

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

und erhalten eine Ausgabe etwas wie

<a3>Some value</a3>

Wichtig: Und ich möchte an die Ausgabe ersetzen können a1.a2.a3 so mit Nachkommen ist der in Frage. : (

Es ist also im Grunde die Fähigkeit, Anruf XML-Abfrage in einem String. Gibt es eine Möglichkeit, dies zu tun. Nur ein Hinweis wäre super, ich kann es tun, wenn ich ein bisschen Vorsprung bekam.

Danke!


Ich denke, dass ich eine Lösung mit Hilfe von diesem Link:

Aktualisieren eine Action xML-Objekt direkt in einer Linie mit 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;
        }

Sie können es so nennen:

updateXml(xmlHold, "words.exercise", sortedXmlList, true);
War es hilfreich?

Lösung

Ich bin zu faul, um Code und testen Sie es, aber hier Idee:

  • Brechen Sie Ihre Abfrage auf Teile "a1.a2.a3".split(".")
  • Gehen Sie auf die Teile, rufen xml.elements(parts[i]) (Sie werden zusätzlich benötigen (vielleicht verschachtelt) Funktion für rekursive Aufrufe)
  • Wenn Sie erhalten nicht leer XMLList, wiederholen Aufruf elements auf dieser Liste nächsten Teil verwendet wird.
  • Im letzten Teil, Extrakt Text von ihm mit children()[0].
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top