0

我正在开发一个调用和搜索如下 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 中的节点匹配....

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 回答