我一直在修补这个问题,希望有人能得到我想要做的事情
我有一个 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 的值)