0

我正在使用这样的分层 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") 并返回正确的结果,但它不计入根节点(在这种情况下,必须包含它)

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

提前致谢

克里斯蒂安

4

1 回答 1

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>
于 2013-09-12T06:36:59.813 回答