我已经导入了一个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
但它不会那样工作。而且我不确定会发生什么。我花了很多时间尝试搜索和搜索网页,但我不确定如何描述我需要知道的内容,因此我找不到任何内容。
与往常一样,非常感谢您的帮助:)
答案 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