【发布时间】:2015-11-15 23:23:21
【问题描述】:
我正在尝试获取 xml 文件元素的子元素。我尝试使用嵌套循环,例如:
for each (var tempNode:XML in menu_xml.elements())
{
if (tempNode.children().length() > 0)
但是无法做到这一点。即使此代码有效,它也会获得有限阶段的元素。
如何逐个获取子元素,或者有更简单的方法吗?
编辑:这是示例 xml 内容:
<mainmenu>
<home/>
<portfolio/>
<contact/>
<friends>
<bestfriends>
<joe/>
<karen/>
<bob/>
</bestfriends>
<otherfriends>
<john/>
<peter/>
</otherfriends>
</friends>
<animals>
<cat/>
<dog/>
<horse/>
</animals>
</mainmenu>
编辑 2:我还没有决定如何使用这些节点。假设我将它们解析为一个数组。 arr[3][0][0] 应该是 joe。
【问题讨论】:
-
使用递归函数怎么样?
-
感谢您的回答。我不认为它比循环更特别。但如果你能给我一个例子,我会很高兴。
-
@onurcano22 你能开始提供一个例子吗?到目前为止,我完全不清楚 XML 文件是什么样的,您想要访问其中的哪些元素以及您想要对它们做什么。请详细说明!
-
@onurcano22 这是一个基本的例子:
var testXML:XML = <root><l1><l2><l3/></l2></l1></root>; trace(getNames(testXML)); //recursive function getNames(xml:XML):String{ var result:String = xml.localName(); var childrenLen:int = xml.children().length(); if(childrenLen > 0){ for(var i:int = 0 ; i < childrenLen; i++) result += "->"+getNames(xml.children()[i]); } return result; }你应该能够通过循环实现同样的效果......关于递归,这是一个简单的问题,而不是效率 -
@GeorgeProfenza 我正在使用您的代码。我会告诉它是否有效。
标签: actionscript-3 actionscript flash-cc