質問

ようなことができるようになりたいです

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

そして、ような出力を取得します

<a3>Some value</a3>

重要: そして、私はで出力を交換できるようになりたいです A1.A2.A3 だから使用してください 子孫 問題がありません。 :(

したがって、基本的には文字列でXMLクエリを呼び出す機能です。これを行う方法はありますか。ちょうどヒントが超えるでしょう、私が少しヘッドスタートを得たならば、私はそれをすることができます。

ありがとうございました!


このリンクの助けを借りて解決策を見つけたと思います。

e4xを使用して、ActionScript XMLオブジェクトを1つの行で直接更新しますか?

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;
        }

あなたはそれをこのように呼ぶことができます:

updateXml(xmlHold, "words.exercise", sortedXmlList, true);
役に立ちましたか?

解決

私はそれをコードしてテストするのが面倒ですが、ここにアイデアがあります:

  • 部品でクエリを破ります "a1.a2.a3".split(".")
  • 部品に行き、呼び出します xml.elements(parts[i]) (再帰通話には追加の(おそらくネストされた)機能が必要です)
  • 空でないXmllistを取得した場合は、繰り返し通話します elements 次の部分を使用してそのリストに。
  • 最後に、そこからテキストを抽出します children()[0].
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top