0

次のような XML シートを呼び出して検索するプロジェクトに取り組んでいます。

    <Searchtext Wordlookup="john smith">
        <location>$1</location>
        <Name>john smith</Name>
    </Searchtext>

そしてそれは約100人以上の人々のためにこのように続きます.

今、私のフラッシュはこのデータを取得し、ユーザーがテキストボックスをクリックするか (@Wordlookup を使用して e.target.data.text が xml に一致する)、または人の名前を入力できるようにします (再びテキストボックスの内容に一致します) @Wordlookup に) すると、その人物の場所が点灯します (MC はそれぞれの場所ノードと同じ名前になります)。この端は、次のコードを使用して完全に正常に機能します。

    var result:String = xmldata.Searchtext.(@Wordlookup == inputTxt.text.toLowerCase()).location.toString();

今は反対のことをしたいです。場所をクリックすると、コードがそのムービークリップの名前を xml 内の場所と照合し、その場所を明るくして、テキスト ボックスに人物の名前を出力します。唯一の問題は、Flash が私の xml 内のノードが未定義の変数であると考えているようです。私は解決策を検討しましたが、解決できないようです(おそらく単純であり、自分自身に直面します)エラーを引き起こすコードは次のとおりです。

    var resultz:String = xmldata.Searchtext.(location.text() == inputTxt2.text()).Name.toString();

生成されるエラーは次のとおりです: ReferenceError: エラー #1065: 変数の場所が定義されていません。

編集:私はもともとinputTxt2.textをe.target.nameとして持っていましたが、今のところテキストボックスに投げているので、ロケーションノードに一致するものを出力していることがわかります。

なぜこれが起こっているのか正確にはわかりませんが、事前に助けてくれてありがとう!

別の編集: .* を追加します。:

 var resultz:String = xmldata.*.Searchtext.(location.text() == inputTxt2.text()).Name.toString();

ノードを変数として作成するのをやめましたが、それでもnullを返します。一致する場所から名前を返すより良い方法はありますか? MC の名前が XML のノードと一致することを認識していないようです....

4

1 に答える 1

0
    var xmldata:XML = new XML(
                <root>
                    <Searchtext Wordlookup="john smith">
                        <location>$1</location>
                        <Name>john smith</Name>
                    </Searchtext>
                </root>
            )

    var result1:String = xmldata.Searchtext.(@Wordlookup == "john smith").location.toString();
    trace(result1) // traces $1

    var result2:String = xmldata.Searchtext.(location == "$1").Name.toString()
    trace(result2) // traces john smith
于 2013-03-05T18:55:45.397 に答える