我想使用ActionScript 3检查XML文件中是否有字符串

我想使用ActionScript 3检查XML文件中是否有字符串,xml,actionscript-3,flash,Xml,Actionscript 3,Flash,XML文件 <?xml version="1.0" encoding="utf-8"?> <dictionary> <entries>ABALONE</entries> <entries>ABANDON</entries> <entries>ABAXIAL</entries> </dictionary> 我尝

XML文件

    <?xml version="1.0" encoding="utf-8"?>


    <dictionary>

        <entries>ABALONE</entries>
        <entries>ABANDON</entries>
        <entries>ABAXIAL</entries>

    </dictionary>
我尝试了循环,但是单词太多了,这使得图形处理有点滞后

我不熟悉XML和ActionScript


谢谢你的帮助。

我会这样做的。这只是对代码的修改,但它会在XML文件中的每个单词上循环,并将其与您要查找的单词进行比较。如果存在,它将返回
true
;否则,
false
将按照您的要求执行

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("myXML.xml"));
myLoader.addEventListener(Event.COMPLETE, OnloadXML);

var wordSearch:String = "ABAXIAL";

function OnloadXML(e:Event):void{

    myXML = new XML(e.target.data);
    var wordList:XMLList = myXML.entries;
    var wordExistenceStatus:Boolean = checkWord(wordList);
    trace(wordExistenceStatus);
}

function checkWord(wordList:XMLList){
    //if "searchWord" exist in the xml, then return true else return false.
    var word:XML;
    for each(word in wordList) {
        if( wordSearch == word.toString()) {
            return(true);
        }
    }
    return(false);
}

我在Flash CS6上运行了这段代码,它工作正常。

虽然您可以在每个XML节点上迭代并查找字符串,但简单地在XML字符串数据中查找单词(在解析为XML之前)可能会更快、更容易(未经测试的假设)


尝试
var-wordSearch:String=“ABAXIAL”因为它是一个字符串。我在这里打错了。但实际上它是var-wordSearch:String=“ABAXIAL”;我的意思是要完成的功能。非常感谢。它真的工作得很快。顺便说一句,我有5个相同结构的xml,但是单词的长度从3到7不等。如果我需要更改我的xml清单,我只需要更改wordList变量,对吗?如果您有多个要搜索的xml文件,我会创建一个文件名数组,然后在加载xml文件的每个文件名上循环,所有其他文件都保持不变。非常感谢,但不会慢一点,因为它将在所有xml文件中搜索。我正在考虑另一种方法,比如加载所有xml文件,然后根据单词的长度更改wordList变量。这样,只会搜索1个xml文件;但是,在尝试每种方法之前,您不会知道。更改wordList变量并不意味着什么,因为如果您的数据仍然在不同的XML文件中,那么您仍然需要在某个时候加载多个XML文件。如果将所有xml文件合并到一个文件中,速度会快一点,快多少,我不知道,因为这取决于文件的大小。
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("myXML.xml"));
myLoader.addEventListener(Event.COMPLETE, OnloadXML);

var wordSearch:String = "ABAXIAL";

function OnloadXML(e:Event):void{

    myXML = new XML(e.target.data);
    var wordList:XMLList = myXML.entries;
    var wordExistenceStatus:Boolean = checkWord(wordList);
    trace(wordExistenceStatus);
}

function checkWord(wordList:XMLList){
    //if "searchWord" exist in the xml, then return true else return false.
    var word:XML;
    for each(word in wordList) {
        if( wordSearch == word.toString()) {
            return(true);
        }
    }
    return(false);
}
var wordSearch:String = "ABAXIAL";

function OnloadXML(e:Event):void{

     var xString:String = e.target.data;

     myXML = new XML(e.target.data);

     function checkWord(searchWord:String){
         return xString.indexOf(searchWord) > -1;
     }

}