【问题标题】:Accessing E4X nodes having special characters in name without breaking binding chain in flex访问名称中具有特殊字符的 E4X 节点而不破坏 flex 中的绑定链
【发布时间】:2010-04-16 10:34:24
【问题描述】:

我正在使用 E4X 在 flex 3 中绑定一些来自 xml 的值。

当 xml 标签(或属性)名称中有特殊字符时出现问题:有 xml 内容

var xml:XML = <tag>
    <special-name att="val" />
</tag>

无法使用xml.special-name.@att 访问special-name,因为它被解释为减法,另一方面,使用方括号符号xml['special-name'].@att 会破坏绑定链。

有没有一种优雅的方法来解决这个问题(比如特殊的语言语法),而无需编写自定义绑定设置器和侦听器?

【问题讨论】:

    标签: xml apache-flex actionscript-3 binding e4x


    【解决方案1】:

    XML 类的 child() 函数在这种情况下对你有用吗?我现在无法检查它,但child() 返回一个XMLList,这应该适用于绑定。

    或者,您不能只替换所有“有问题的”节点名称(将原始名称存储在字典中,替换名称作为键)然后进行绑定,完全避免这个问题吗?

    【讨论】:

    • 实际上,调用 child() 会破坏绑定,因为绑定仅适用于属性(与方法调用相反)。但是,使用 child() 将使编译器高兴(删除警告)不使用括号表示法。我不完全明白您建议如何替换名称?
    • 如果 XML 不是太大,您可以使用字符串操作将有问题的名称替换为有效的名称。我知道您通常不应该对 XML 进行字符串操作(请不要打败我 ^^),但这可以帮助您。我建议存储替换的名称,以便在使用 XML 后需要将其存储/发送到服务器时将它们切换回来。
    • 我想我并没有那么绝望,甚至执行字符串替换。因为除了内容中的任何意外出现之外,替换标签名称并非易事。
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 2016-11-05
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多