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