如何找到 xml 对象的第 N 个元素
Posted
技术标签:
【中文标题】如何找到 xml 对象的第 N 个元素【英文标题】:How can I find Nth element of an xml object 【发布时间】: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 我正在使用您的代码。我会告诉它是否有效。
【参考方案1】:
为什么不使用 E4X?在这里你可以找到一些解释: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e72.html
【讨论】:
抱歉回复晚了,我试试看。以上是关于如何找到 xml 对象的第 N 个元素的主要内容,如果未能解决你的问题,请参考以下文章