我正在开发一个调用和搜索如下 XML 表的项目:
<Searchtext Wordlookup="john smith">
<location>$1</location>
<Name>john smith</Name>
</Searchtext>
对于大约 100 多人来说,它继续这样。
现在,我的 flash 获取这些数据并允许用户单击文本框(其 e.target.data.text 使用 @Wordlookup 与 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: Error #1065: Variable location is not defined。
编辑:我最初将 inputTxt2.text 作为 e.target.name,但我现在将它放在一个文本框中,以便我可以看到它正在输出与我的位置节点匹配的内容。
不知道为什么会发生这种情况,提前感谢您的帮助!
另一个编辑:所以添加 .*. :
var resultz:String = xmldata.*.Searchtext.(location.text() == inputTxt2.text()).Name.toString();
阻止它创建 th 节点作为变量,但它仍然返回 null。有没有更好的方法从匹配的位置返回名称?似乎它只是没有认识到 MC 的名称与 XML 中的节点匹配....