【问题标题】:Working with XML in flex在 flex 中使用 XML
【发布时间】:2013-09-11 20:03:25
【问题描述】:

我正在使用这样的分层 xml 结构:

<employee name="AAA" group="1"..../>
    <employee name="BBB" group="1"...>
        <employee name="CCC" group="1".../>
     </employee>  
    <employee name="DDD" group="0"... />
    <employee name="EEE" group="0"... />
</employee>

首先我需要统计所有员工节点(包括根节点)。必须是:5。 我尝试使用 xml..employee.length() 但它返回 4(不包括根节点“AAA”) 如果我尝试 xml.employee.length() 只返回 1

然后,我必须创建一个带有特定搜索的 XMList。例如所有具有属性 group="1" 的节点

发生同样的问题,我使用: hitList:XMLList = xml..employee.(@group == "1") 并返回正确的结果,但它不计入根节点(在这种情况下,它必须包括在内)

如何进行包括根节点在内的这些操作?

提前致谢

克里斯蒂安

【问题讨论】:

  • 第一个标签似乎不正确。它不应该用“/”关闭

标签: xml apache-flex root


【解决方案1】:

问题在于 XML 变量与根 XML 标记相同。所以如果你写了

xml..employee.length()

这意味着你分析根节点下的所有节点。变量 xml 是你的根节点。

要获得正确的结果,您需要在结构中添加一个空的虚拟根节点。

<?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" 
           xmlns:mx="library://ns.adobe.com/flex/mx" 
           minWidth="955" minHeight="600" creationComplete="init()">
<fx:Declarations>
    <fx:XML id="xml" xmlns="">
        <root>
            <employee name="AAA" group="1">
                <employee name="BBB" group="1">
                    <employee name="CCC" group="1"/>
                </employee>  
                <employee name="DDD" group="0"/>
                <employee name="EEE" group="0"/>
            </employee>
        </root>
    </fx:XML>
</fx:Declarations>

<fx:Script>
    <![CDATA[
        private function init():void
        {
            var len:int = xml..employee.length(); //gives 5
            var hitList:XMLList = xml..employee.(@group == "1"); //gives 3 nodes

            trace();
        }
    ]]>
</fx:Script>

</s:Application>

【讨论】:

  • 谢谢安东,我可以按照你的建议解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
相关资源
最近更新 更多