apache-flex 如何在Flex中解析xml?

xpcnnkqh  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(231)

我有以下XML结构:

<Order>
  <Mats>
    <mat>
      <item>
        <imgsrc>img_0</imgsrc>
        <cid>cid_0</cid>
      </item>
    </mat>
    <mat>
      <item>
        <imgsrc>img_1</imgsrc>
        <cid>cid_1</cid>
      </item>
    </mat>
  </Mats>
</Order>

在Flex中,我试图获取第一个imgsrc和第一个cid。这是我目前所拥有的:

public function globals_get_default_matte():void
{
    var defaults_matte_loader:XMLLoader = new XMLLoader();          
    defaults_matte_loader.url = Globals.defaultMatteXMLURL;
    defaults_matte_loader.loadXML();
   defaults_matte_loader.addEventListener("dataWritten",globals_get_default_matte_result_handler);
}

public function globals_get_default_matte_result_handler(e:Event):void
{
    var _xml:XML = new XML(e.currentTarget.data);
    if (_xml)
    {
        var mattes_list:XMLList = _xml.elements("Mats");
        var matte0:XML = mattes_list[0][0][0] as XML;
        trace(mattes_list);
        trace(matte0);
        trace(matte0.childNodes);
    }
}

在“表示式”页签中,matte0.childNodes提供:
评估期间的错误

c7rzv4ha

c7rzv4ha1#

这不是在做你想做的事:

var mattes_list:XMLList = _xml.elements("Mats");
var matte0:XML = mattes_list[0][0][0] as XML;

mattes_list列出了<Mats>节点,然后matte0只选择了第一个(也是唯一的)<Mats>节点。同时,childNodes不是XML的属性,而是遗留的XMLNode对象,您没有使用它。
您应该熟悉一下e4x in AS3,它更像是一个查询选择器语法。
要列出<mat>节点并检索第一个<cid>节点,可以执行以下操作:

var mattes_list:XMLList = _xml.Mats.mat;
var matte0_cid:XML = mattes_list[0].item.cid[0];

相关问题