使用 AS3 检查项目是否存在于 XML 中
Check if item exists in XML with AS3
所以我使用 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>
现在我想检查是否在 XML 中找到了 id。我目前正在使用它,但它总是跟踪 "NOT FOUND" -
for (var i: Number = 1; i < 3; i++) {
if (myXML.Questions.(@id == i).length() > 0) {
trace("FOUND")
} else {
trace("NOT FOUND");
}
}
有了这个 XML 你的 Questions
应该是一个内部数组,也就是说 trace(myXML.Questions.length())
应该 return 大于 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");
}
}
不需要循环。 Vesper 解决方案可行,但理论上非常昂贵且缓慢。 PO 也非常接近,但他使用 @id 就好像 id 元素是一个属性一样。解决方案很简单:
var result:XMLList = xml.Questions.(id == 1);
您要么获得有效的 XMLList,要么没有,仅此而已。
也不要使用那个代码逻辑:
if(xml.Questions.(id == 1).length() > 0)
它会创建不必要的额外 xml 搜索,因为如果为真,您将不得不再次调用 "xml.Questions.(id == 1)" 来获取列表。而是先调用它并存储结果,然后根据需要检查长度。
我已经使用 AS3/XML 一段时间了,但我想如果你想找到 any id(不管数字是多少),你可以尝试:
myXML.Questions.id.length() > 0
至于为什么它总是在您的代码中跟踪 NOT FOUND,这是因为 @ 符号是针对属性的,而不是针对元素的。所以它试图找到:
<Questions id=1>
...
</Questions>
所以我使用 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>
现在我想检查是否在 XML 中找到了 id。我目前正在使用它,但它总是跟踪 "NOT FOUND" -
for (var i: Number = 1; i < 3; i++) {
if (myXML.Questions.(@id == i).length() > 0) {
trace("FOUND")
} else {
trace("NOT FOUND");
}
}
有了这个 XML 你的 Questions
应该是一个内部数组,也就是说 trace(myXML.Questions.length())
应该 return 大于 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");
}
}
不需要循环。 Vesper 解决方案可行,但理论上非常昂贵且缓慢。 PO 也非常接近,但他使用 @id 就好像 id 元素是一个属性一样。解决方案很简单:
var result:XMLList = xml.Questions.(id == 1);
您要么获得有效的 XMLList,要么没有,仅此而已。
也不要使用那个代码逻辑:
if(xml.Questions.(id == 1).length() > 0)
它会创建不必要的额外 xml 搜索,因为如果为真,您将不得不再次调用 "xml.Questions.(id == 1)" 来获取列表。而是先调用它并存储结果,然后根据需要检查长度。
我已经使用 AS3/XML 一段时间了,但我想如果你想找到 any id(不管数字是多少),你可以尝试:
myXML.Questions.id.length() > 0
至于为什么它总是在您的代码中跟踪 NOT FOUND,这是因为 @ 符号是针对属性的,而不是针对元素的。所以它试图找到:
<Questions id=1>
...
</Questions>