0
我一直在擺弄了一會兒白衣這個問題,並希望有人得到我想要做的Actionscript過濾器的XML與可變
我有一個XML文件
<Results>
<Details>
<Id>1</Id>
</Details>
<StepResults>
<Step SeqNr="1">
<Value>10</Value
</Step>
<Step SeqNr="2">
<Value>100</Value
</Step>
</StepResults>
</Results>
現在我創建一個腳本,人們可以動態地解析它,可以說有人想要得到這個結果的id,他可以在後端添加一個變量,如下所示:[Details.Id],這將在actionscript中解析並從XML。
我分析它是這樣的:
var pattern:RegExp = /\[[A-Za-z\.0-9()=\[\]@]*\]/g;
var possibleVars:Array = str.match(pattern);
for each(var myVar:String in possibleVars){
//Remove the blockquotes from the var (this would be the [Details.Id])
var checkVar:String = myVar.substr(1,(myVar.length-2));
var result:String = dotSyntax(xmlToParse,checkVar);
}
private function dotSyntax(target:XML, path:String):String {
//Split the var into different pars
var level:Array=path.split(".");
var curr:* = target;
for (var i:int = 0; i<level.length; i++) {
if(i==0 && curr[level[i]].length() <= 0){
return "";
break;
}
//Try to go trough the xml with the supplied var
curr=curr[level[i]];
}
//return the value from the xml file (if all went well we have 1 here
return curr;
}
現在,這真的像一個魅力,但我想給他們找到不同的步驟值的可能性,因此通常得到在ActionScript這個工作直接,你會過濾這樣的XML(如果你想步SeqNr = 2的值):
resXml.StepResults.Step.(@SeqNr==2).Value
但我似乎無法得到這個與動態的變量。任何指針如何使用dotSyntax函數來做到這一點? (返回步驟seqnr2的值)