I've tested using SDK 3.1.0 and the following XML is obtained from
ServerConfig.serverConfigData
<services>
<service id="remoting-service"/>
<service id="proxy-service">
<destination id="DefaultHTTP">
<channels>
<channel ref="my-amf"/>
</channels>
</destination>
</service>
<service id="message-service"/>
<channels>
<channel id="my-amf" type="mx.messaging.channels.AMFChannel">
<endpoint
uri="http://{server.name}:{server.port}/WebContent/messagebroker/amf"/>
<properties/>
</channel>
<channel id="my-polling-amf" type="mx.messaging.channels.AMFChannel">
<endpoint
uri="http://{server.name}:{server.port}/WebContent/messagebroker/amfpolling"/>
<properties>
<polling-enabled>
true
</polling-enabled>
<polling-interval-seconds>
4
</polling-interval-seconds>
</properties>
</channel>
<channel id="my-secure-amf"
type="mx.messaging.channels.SecureAMFChannel">
<endpoint
uri="https://{server.name}:{server.port}/WebContent/messagebroker/amfsecure"/>
<properties/>
</channel>
</channels>
</services>
So in my case when using "channel" instead of "channel-definition" the
E4X expression works. Can you take a look on the XML object
ServerConfig.serverConfigData and see what is the structure?