使用 AS3 检查项目是不是存在于 XML 中
Posted
技术标签:
【中文标题】使用 AS3 检查项目是不是存在于 XML 中【英文标题】:Check if item exists in XML with AS3使用 AS3 检查项目是否存在于 XML 中 【发布时间】:2015-08-27 04:01:55 【问题描述】:所以我正在使用 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。我目前正在使用它,但它总是跟踪“未找到”-
for (var i: Number = 1; i < 3; i++)
if (myXML.Questions.(@id == i).length() > 0)
trace("FOUND")
else
trace("NOT FOUND");
【问题讨论】:
【参考方案1】:我使用 AS3/XML 已经有一段时间了,但我想如果你想找到 any id(不管数字多少),你可以试试:
myXML.Questions.id.length() > 0
至于为什么它总是在您的代码中跟踪 NOT FOUND,这是因为 @ 符号用于属性,而不是元素。所以它试图找到:
<Questions id=1>
...
</Questions>
【讨论】:
【参考方案2】:不需要循环。 Vesper 解决方案可行,但理论上非常昂贵且速度慢。 PO 也非常接近,但他使用 @id 就好像 id 元素是一个属性。解决方法很简单:
var result:XMLList = xml.Questions.(id == 1);
您要么得到一个有效的 XMLList,要么没有,但仅此而已。
也不要使用那个代码逻辑:
if(xml.Questions.(id == 1).length() > 0)
它会创建一个不必要的额外 xml 搜索,因为如果为真,您将不得不再次调用“xml.Questions.(id == 1)”来获取列表。而是先调用它并存储结果,然后根据需要检查长度。
【讨论】:
【参考方案3】:有了这个 XML,你的 Questions
应该是一个内部数组,也就是说,trace(myXML.Questions.length())
应该返回大于 1,所以你要遍历 myXML.Questions
并检查节点的 id
是否等于你的 @ 987654325@.
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");
【讨论】:
以上是关于使用 AS3 检查项目是不是存在于 XML 中的主要内容,如果未能解决你的问题,请参考以下文章
通过 jquery 检查项目是不是存在于特定的 <td> 中