我目前正尝试使用Flex作为客户端与API进行通信。 我正在使用Flash Builders HTTPServices这样做,对所有这些都是一个菜鸟。 如果访问的XML文件元素格式正确,则一切正常,但是如果我在元素名称中添加连字符,我会向我发出警告,即警告我。返回的对象包含一个无效的名称“created-on”,该名称不符合Actionscript标识符命名准则
这有效:
<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
<project>
<createdon>2010-07-10</createdon>
<name>Project 1</name>
</project>
</projects>
这不是:
<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
<project>
<created-on>2010-07-10</created-on>
<name>Project 1</name>
</project>
</projects>
我的问题是如何才能使返回的xml actionscript友好。对此有标准或最佳做法吗?我显然无法控制传递的xml。
干杯
答案 0 :(得分:0)
为了将来参考,请使用方括号。例如:
private var createdOn:String;
protected function myService_requestHandler(event:ResultHandler):void
{
createdOn = event.result.projects.project["created-on"];
}
答案 1 :(得分:0)
如果你真的想要在没有' - '的情况下访问内容,请将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...
}
答案 2 :(得分:-1)
将HTTPService
的{{3}}设置为e4x
或xml
。默认值为object
,因此Flex会尝试为xml树中的每个元素创建ActionScript对象。
<mx:HTTPService resultFormat="xml" other="attributes go here"/>