Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AS3检查XML中是否存在项_Xml_Actionscript 3_Actionscript_Find_Nodes - Fatal编程技术网

使用AS3检查XML中是否存在项

使用AS3检查XML中是否存在项,xml,actionscript-3,actionscript,find,nodes,Xml,Actionscript 3,Actionscript,Find,Nodes,因此,我使用AS3提取此XML数据并将其存储为myXML: <Questions> <id>1</id> <question> This is question 1. </question> </Questions> <Questions> <id>3</id> <question> This is question 3.

因此,我使用AS3提取此XML数据并将其存储为myXML:

<Questions>
    <id>1</id>
    <question>
    This is question 1.
    </question>
</Questions>
<Questions>
    <id>3</id>
    <question>
    This is question 3.
    </question>
</Questions>

1.
这是问题1。
3.
这是问题3。
现在我想检查是否在该XML中找到id。我目前正在使用它,但它总是跟踪“未找到”-

for(变量i:Number=1;i<3;i++){
if(myXML.Questions.(@id==i).length()>0){
跟踪(“发现”)
}否则{
跟踪(“未找到”);
}
}

使用此XML,您的
问题
在内部应该是一个数组,也就是说,
跟踪(myXML.Questions.length())
应该返回大于1的值,因此您需要迭代
myXML.Questions
并检查节点的
id
是否等于
i

for (var i: Number = 1; i < 3; i++) {
    var b:Boolean=false;
    for (var j:int=0;j<myXML.Questions.length();j++) {
        if (myXML.Questions[j].id==i) b=true;
    }
    if (b){
        trace(i,"FOUND")
    } else {
        trace(i,"NOT FOUND");
    }
}
for(变量i:Number=1;i<3;i++){
变量b:布尔值=false;

对于(var j:int=0;j不需要循环。Vesper解决方案可行,但在理论上非常昂贵且缓慢。PO也非常接近,但他使用@id,就好像id元素是一个属性一样。解决方案很简单:

var result:XMLList = xml.Questions.(id == 1);
您要么有一个有效的XMLList,要么没有,但仅此而已

也不要使用该代码逻辑:

if(xml.Questions.(id == 1).length() > 0)

它创建了一个不必要的额外xml搜索,因为如果为true,则必须再次调用“xml.Questions.(id==1)”以获取列表。相反,先调用它并存储结果,然后检查长度(如果愿意)。

我已经使用AS3/xml有一段时间了,但我认为如果您想查找任何id(无论数字是多少),您都可以尝试:

myXML.Questions.id.length() > 0
至于为什么它总是在代码中找不到跟踪,这是因为@符号它用于属性,而不是元素。因此它试图找到:

<Questions id=1>
    ...
</Questions>

...
<Questions id=1>
    ...
</Questions>