AS3 Flash CC XML需要查找节点的属性,节点号未知

时间:2013-09-06 11:54:32

标签: xml actionscript-3 actionscript traversal flash-cs6

我已经导入了一个xml文件,现在我遇到了一个让我觉得非常愚蠢的问题:/

xml-structure:

<xml>
 <mylist>
  <category cat=klank>
   <word aw=nk>Word</word>
   (there are 12 of these word nodes)
  </category>
 </mylist>
</xml>

在flash中我有一个名为 curWord 的var,它是我类别中随机确定的单词。我不知道它在我的xml中是哪个节点号。

我有一个名为 curAw 的变量字符串。它需要包含 curWord 的aw属性。

然后我做了:

curAw = list.category.(@cat == klank).(word == curWord).@aw

但它不会那样工作。而且我不确定会发生什么。我花了很多时间尝试搜索和搜索网页,但我不确定如何描述我需要知道的内容,因此我找不到任何内容。

与往常一样,非常感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

有几件事。我认为你需要引用属性的值(至少我在Flash CS5中遇到错误,如果我不这样做)。密切注意控制台上的错误以捕捉这类事情。此外,myList是节点层次结构的一部分,因此您需要通过该节点引用category节点。

你可以在没有循环的情况下做你想做的事,但我在documentation中找不到方法。但是,您可以通过循环选定category中的单词节点来获得所需的值,如下所示:

var list:XML = new XML('<xml><mylist><category cat="klank"><word aw="nk">Word</word><word aw="ok">Word2</word><word aw="pk">Word3</word></category></mylist></xml>');
var curWord = 'Word';

var words:XMLList = list.mylist.category.(@cat == 'klank').word; 

// Loop over the word nodes from the selected category
for each(var word:XML in words) 
{
        // Find the node with value matching curWord
    if (word.text() == curWord) {
        trace(word.@aw);
    }
}

答案 1 :(得分:1)

没有循环:

list.mylist.category.(@cat == "klank").word.(text()==curWord).@aw