Flex HTTPServices和有效的xml

时间:2010-07-20 05:39:19

标签: xml flex actionscript httpservice

我目前正尝试使用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。

干杯

3 个答案:

答案 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}}设置为e4xxml。默认值为object,因此Flex会尝试为xml树中的每个元素创建ActionScript对象。

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