2013-03-05 1 views
0

Я работаю над проектом, который вызывает и отыскивает XML-лист, который выглядит следующим образом:AS3 вызывает узел xml в строке переменной, что здесь происходит?

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

и так будет продолжаться в течение приблизительно 100+ человек.

Теперь моя вспышка берет эти данные и позволяет пользователю либо щелкнуть по текстовому полю (чей e.target.data.text сопоставляется с xml с помощью @Wordlookup), либо ввести имя человека (снова сопоставляя содержимое текстового поля с @Wordlookup), что приводит к тому, что местоположение этого человека загорается (для MC названы те же, что и для узла местоположения). Этот конец отлично работает с использованием этого кода:

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

Теперь я хочу сделать обратное; щелкните по местоположению, и код будет соответствовать имени мувиклипа для местоположения в моем xml и закроет это местоположение и выведет имя человека в текстовое поле. Только проблема в этой Flash, по-видимому, считает, что узел в моем xml теперь является неопределенной. Я посмотрел высоким и низким для решения, но я просто не могу показаться, чтобы решить эту проблему (это, вероятно, просто, и я FACEPALM самого) Индуцирующего код ошибки это:

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

И полученная ошибка: ReferenceError: Ошибка # 1065: Местоположение переменной не определено.

EDIT: У меня первоначально был inputTxt2.text как e.target.name, но я сейчас бросаю его в текстовое поле, чтобы увидеть, что он выводит что-то, что будет соответствовать моим узлам местоположения.

Не уверен, почему именно это происходит, заблаговременно за любую помощь!

ДРУГОЙ РЕДАКТИРОВАНИЕ: Так что добавление. *. :

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

не удалось создать узел в качестве переменной, но он по-прежнему возвращает значение null. Есть ли лучший способ вернуть имя из соответствующего местоположения? Кажется, что это просто не признает, что имя MC соответствует узлам в XML ....

ответ

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 
+0

Это сработает, но я не хочу писать код для каждого из 100+ люди. Я пытаюсь получить его, чтобы он считывал вывод (в данном случае данные inputTxt2) и сопоставлял его с тем, что находится в xml. Спасибо хоть! –

+0

затем замените «$ 1» на inputTxt2.text и оставьте значение(), поскольку текст является свойством, а не методом. –

+0

Я тоже это сделал, и я до сих пор, к сожалению, получил ошибку. Вот почему я очень любопытный, кажется, он должен работать, но просто нет. –

 Смежные вопросы

  • Нет связанных вопросов^_^