不明白这个 E4X 行为
我试图获取特定节点的属性值,但被它的行为所困扰。
我在数据提供程序中有此 XML:
<items>
<item>
<code>ITEM1</code>
<groups>
<group>
<code>GROUP1</code>
<props>
<prop>
<code>PROP1</code>
</prop>
<prop>
<code>PROP2</code>
</prop>
</props>
</group>
</groups>
</item>
<!-- Lots more items, each item has a variable number of groups and props -->
</items>
现在,此代码:
var itemData:XMLList = dataProvider..elements("item").(code == "ITEM1");
成功返回第一个
。
接下来,我这样做:
var groupData:XMLList = itemData..elements("group").(code == "GROUP1")
但这不起作用。 groupData.length() == 0
如果我删除 elements()
,那么它就可以工作:
var groupData:XMLList = itemData..group.(code == "GROUP1")
但我需要使用 elements(),因为元素名称可能是可配置的。
那么问题来了,为什么第一条语句可以工作,但是对第一条语句返回的数据使用相同的语句却无法按预期工作?
任何帮助表示赞赏。提前致谢。
I'm trying to grab a property value of a particular node but getting stumped by its behaviour.
I have this XML in a data provider:
<items>
<item>
<code>ITEM1</code>
<groups>
<group>
<code>GROUP1</code>
<props>
<prop>
<code>PROP1</code>
</prop>
<prop>
<code>PROP2</code>
</prop>
</props>
</group>
</groups>
</item>
<!-- Lots more items, each item has a variable number of groups and props -->
</items>
Now, this code:
var itemData:XMLList = dataProvider..elements("item").(code == "ITEM1");
successfully returns the 1st <item>
.
Next, I do:
var groupData:XMLList = itemData..elements("group").(code == "GROUP1")
But that doesn't work. groupData.length() == 0
If I drop elements()
, then it works:
var groupData:XMLList = itemData..group.(code == "GROUP1")
But I need to use elements() because element names are potentially configurable.
So the question is, why does the first statement work, but using the same statement on the data returned by the first statement failed to work as expected?
Any help appreciated. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为 group 是 groups 的内部元素,而不是 item 的直接子元素
由于本质上是递归的,第二条语句正在工作
尝试以下代码,
您可以启用 Altert 查看表达式结果
编辑元素函数的详细信息可以在
AS3 XML 元素()
希望有帮助
Because group is inner element of groups and not direct child of item
and second statement is working because of recursive in nature
Try following code
you can enable Altert to see expression result
EDITED Details for element function can be found at
AS3 XML elements()
hopes that helps