在AS3中按属性查找节点(XML)

在AS3中按属性查找节点(XML),xml,actionscript-3,Xml,Actionscript 3,我正试图根据节点包含的属性将其作为目标。我环顾四周,很明显,XML.Node(@attribute==“desired attribute”)应该返回所有具有该特定值的节点,但出于某种原因,它不适合我。它也不适用于XML.Node。(@attribute!=“所需属性”)。就好像它不认识到这些值是相同的,或者说它不认识。但是,如果我只执行XML.Node,它将返回该类型的所有节点。这是我的代码(仅在一个类中): 这就是XML(它是一个.oel,它只是一个伪装的XML) 110111111111

我正试图根据节点包含的属性将其作为目标。我环顾四周,很明显,
XML.Node(@attribute==“desired attribute”)
应该返回所有具有该特定值的节点,但出于某种原因,它不适合我。它也不适用于
XML.Node。(@attribute!=“所需属性”)
。就好像它不认识到这些值是相同的,或者说它不认识。但是,如果我只执行
XML.Node
,它将返回该类型的所有节点。这是我的代码(仅在一个类中):

这就是XML(它是一个.oel,它只是一个伪装的XML)


11011111111111111111
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000011100001
10000000000010100001
10000000000000100001
10000000000010100001
11111111111110111111
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,4,4,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,20,33,33,5,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,20,33,33,33,5,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,20,33,33,33,5,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,21,21,21,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,4,4,4,4,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,20,33,33,33,33,5,32,32,32,32,32,32,32,32,32,32
32,32,32,20,33,33,33,33,33,5,32,32,32,32,32,32,32,32,32,32
32,32,32,32,21,21,21,21,21,32,32,32,32,32,32,32,32,32,32,32
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
2,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,36,17,37,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,16,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,35,-1,16,-1,-1,-1,-1,1
16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,16,-1,-1,-1,-1,1
18,17,17,17,17,17,17,17,17,17,17,17,19,-1,18,17,17,17,17,19

我也在游戏中使用Flashpunk,所以如果进口产品来自于此,也会用到Flashpunk。我正在使用Ogmo编辑器,它与FlashPunk配合得很好,可以创建和导出XML。

它可以工作,但并不像您期望的那样

此代码
mapXML.Misc.Spawn。(@entrance==0)
仅返回已创建节点的值和子节点。因此,在您的情况下,它将是空的。 例如
跟踪(mapXML.Collision.(@exportMode==“Bitstring”)
将返回
1101…

我不知道如何使用E4X语法查找节点,但您可以用另一种方法来完成。诸如此类:

for each (var node:XML in mapXML.Misc.Spawn)
{
    if (node.@id == 0)
        return node;
}

您确定
mapXML.Misc.Spawn.(@entrance==0)
没有返回值吗?我已经设置了一个相同的系统,它确实设置了,但没有跟踪到

试试这两个命令中的一个,看看你是否仍然一无所获

trace("length:", mapXML.Misc.Spawn.(@entrance == 0).length());
trace("xml":, mapXML.Misc.Spawn.(@entrance == 0).toXMLString());
尽管如此,请绝对确保您的XML设置完美。就好像没有没有没有入口属性的繁殖节点一样,它将抛出一个错误。为了安全起见,您可以随时使用下面的工具

mapXML.Misc.Spawn.(attribute('entrance') == 0);
trace("length:", mapXML.Misc.Spawn.(@entrance == 0).length());
trace("xml":, mapXML.Misc.Spawn.(@entrance == 0).toXMLString());
mapXML.Misc.Spawn.(attribute('entrance') == 0);