Flex HTTPServices和有效的xml

Flex HTTPServices和有效的xml,xml,apache-flex,actionscript,httpservice,Xml,Apache Flex,Actionscript,Httpservice,我目前正在尝试使用Flex作为客户端与API通信。 我正在使用FlashBuildersHttpServices来实现这一点,这是一个小问题。 如果访问的XML文件元素的格式正确,则所有内容都可以正常工作。但是,如果我在元素名称中添加连字符,则我会得到flex警告,即返回的对象包含不符合Actionscript标识符命名准则的无效名称“created on” 这项工作: <?xml version="1.0" encoding="UTF-8"?> <projects type=

我目前正在尝试使用Flex作为客户端与API通信。 我正在使用FlashBuildersHttpServices来实现这一点,这是一个小问题。 如果访问的XML文件元素的格式正确,则所有内容都可以正常工作。但是,如果我在元素名称中添加连字符,则我会得到flex警告,即返回的对象包含不符合Actionscript标识符命名准则的无效名称“created on”

这项工作:

<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
  <project>
    <createdon>2010-07-10</createdon>
    <name>Project 1</name>
  </project>
</projects>

2010-07-10
项目1
这并不是:

<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
  <project>
    <created-on>2010-07-10</created-on>
    <name>Project 1</name>
  </project>
</projects>

2010-07-10
项目1
那么,我的问题是如何使返回的xml actionscript友好。这方面有没有标准或最佳实践?我显然无法控制传递的xml

干杯

HTTPService
设置为
e4x
xml
。默认值为
object
,因此Flex尝试为xml树中的每个元素创建ActionScript对象

<mx:HTTPService resultFormat="xml" other="attributes go here"/>

为便于将来参考,请使用方括号。例如:

private var createdOn:String;

protected function myService_requestHandler(event:ResultHandler):void
{
    createdOn = event.result.projects.project["created-on"];
}

如果确实要在不使用“-”的情况下访问内容,请将resultFormat设置为“text”,然后执行以下操作:

onLoad(event:ResultEvent):void
{
     var result:String = event.result;
     result = result.replace(/created-on/g, 'createdOn');
     var xml:XML = new XML(result);
     // do your processing now...
}

@Pakman我没有Flex builder来尝试这一点,所以希望您在否决投票之前进行验证。作者问如何使用连字符处理XML节点。即使将
resultFormat
更改为
e4x
,也必须使用括号来引用节点。但是,我是Flex新手,所以我可能错了。