需要ActionScript中的E4X帮助

时间:2010-12-30 22:05:02

标签: xml actionscript

这是XML

如何使用E4X读取节点值

<status>௵௸</status>

和节点     <invisible value="false"/>

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[

            var xml:XML = 
                <iq type="result" id="ss-1">
                  <query status-min-ver="1" status-max="512" status-list-contents-max="5" status-list-max="3" xmlns="google:shared-status">
                    <status>
                      ௵௸
                    </status>
                    <show>
                      default
                    </show>
                    <status-list show="default">
                      <status>
                        ௵௸
                      </status>
                      <status>
                        ௸
                      </status>
                      <status>
                        ௸இ
                      </status>
                    </status-list>
                    <status-list show="dnd">
                      <status>
                        ௵௸
                      </status>
                      <status>
                        dnd, i have bad mood
                      </status>
                      <status>
                        showering
                      </status>
                      <status>
                        ▂▃▄▅▆▇█
                      </status>
                      <status>
                        ௸
                      </status>
                    </status-list>
                    <invisible value="false"/>
                  </query>
                </iq>

            public function init() {
                trace(xml.query.invisible.@value);
            }
        ]]>
    </fx:Script>
</s:Application>

1 个答案:

答案 0 :(得分:0)

假设<iq>是您的根节点。读取第一个status节点的值非常简单:

trace(yourXML.query.status);

读取属性的值是这样的:

trace(yourXML.query.invisible.@value);

编辑:我错过了你的xml使用命名空间。这里的xmlns定义了命名空间:

<query status-min-ver="1" 
       status-max="512" 
       status-list-contents-max="5" 
       status-list-max="3" 
       xmlns="google:shared-status">

这意味着您将不得不使用一些额外的代码来定义要从中检索的命名空间:

import Namespace;
var ns:Namespace = new Namespace("google:shared-status");

然后,在所有节点前面加上命名空间:

trace("foo:" + xml.ns::query.ns::invisible.@value);