将XML文件中的数据读入SWF文件

时间:2014-09-15 07:51:16

标签: xml actionscript-3 flash

我有一个具有以下结构的xml文件:

<onlineTrain>
  <sensor>
    <sendorId>612</sendorId>
    <speed>28.923314981882</speed>
    <trainId>2</trainId>
    <xlocation>100</xlocation>
    <ylocation>307</ylocation>

  </sensor>
  <sensor>
    <sendorId>61122</sendorId>
    <speed>218.923314981882</speed>
    <trainId>2</trainId>
    <xlocation>1200</xlocation>
    <ylocation>3207</ylocation>

  </sensor>
</onlineTrain>

我需要读取flash swf文件中的所有值sensor,所以我使用这部分代码来执行此操作:

xmlList = xml.children();
trace(xml.people[0].Person[0].sensorId);

但它不起作用。任何想法都会受到赞赏。我需要访问所有值。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您正在尝试访问不存在的节点。正确的代码应如下所示:

trace(xml.sensor[0].sendorId); // 612
trace(xml.sensor[1].sendorId); // 61122

答案 1 :(得分:1)

我想你想要处理sendorId的每个值(不是sensorId!)。由于XMLList是可迭代的,最简单的方法是:

var xml:XML =
    <onlineTrain>
      <sensor>
        <sendorId>612</sendorId>
        <speed>28.923314981882</speed>
        <trainId>2</trainId>
        <xlocation>100</xlocation>
        <ylocation>307</ylocation>
      </sensor>
      <sensor>
        <sendorId>61122</sendorId>
        <speed>218.923314981882</speed>
        <trainId>2</trainId>
        <xlocation>1200</xlocation>
        <ylocation>3207</ylocation>
      </sensor>
    </onlineTrain>;

for each(var element:XML in xml.sensor.sendorId)
    trace(element.toString());

如果要从此列表中创建Vector / Array,只需将值转换为所需类型并将其推入空Vector / Array

符号xml.sensor.sendorId mays一眼就看起来很奇怪,因为你在一个列表(xml.sendor)上调用了一个属性(sendorId),但那是你可以做的那种奇怪但有力的事情。 E4X。

official documentation for E4X

的更多信息