Xml 在flex中访问名称中具有特殊字符的E4X节点而不中断绑定链

Xml 在flex中访问名称中具有特殊字符的E4X节点而不中断绑定链,xml,apache-flex,actionscript-3,binding,e4x,Xml,Apache Flex,Actionscript 3,Binding,E4x,我使用E4X在Flex3中绑定xml中的一些值 当xml标记(或属性)的名称中有一个特殊字符时,就会出现一个问题:具有xml内容 var xml:XML = <tag> <special-name att="val" /> </tag> var-xml:xml= 无法使用xml访问special name。special name.@att因为它被解释为减法,而另一方面,使用方括号表示法xml['special-name'].@att会断开绑定链

我使用E4X在Flex3中绑定xml中的一些值

当xml标记(或属性)的名称中有一个特殊字符时,就会出现一个问题:具有xml内容

var xml:XML = <tag>
    <special-name att="val" />
</tag>
var-xml:xml=
无法使用
xml访问
special name
。special name.@att
因为它被解释为减法,而另一方面,使用方括号表示法
xml['special-name'].@att
会断开绑定链

有没有一种优雅的方法可以在不编写自定义绑定设置器和侦听器的情况下解决这个问题(如特殊语言语法)?

在这种情况下,类的
child()
函数是否适合您?我现在无法检查它,但是
child()
返回一个
xmlslist
,这应该可以用于绑定


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

实际上,调用child()会破坏绑定,因为绑定只对属性有效(与方法调用相反)。但是,使用child()将使编译器对不使用括号表示法感到高兴(删除警告)。我不完全理解您建议如何替换名称?如果XML不是太大,您可以使用字符串操作将有问题的名称替换为有效的名称。我知道您通常不应该对XML进行字符串操作(请不要击败我^^^),但这可以帮助您。我建议存储被替换的名称,以便在使用XML后需要存储/发送XML到服务器时可以将其切换回。我想我并不急于执行字符串替换。。因为除了内容中的意外事件之外,替换标记名并不是件小事。