如何找到 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 = &lt;root&gt;&lt;l1&gt;&lt;l2&gt;&lt;l3/&gt;&lt;/l2&gt;&lt;/l1&gt;&lt;/root&gt;; trace(getNames(testXML)); //recursive function getNames(xml:XML):String var result:String = xml.localName(); var childrenLen:int = xml.children().length(); if(childrenLen &gt; 0) for(var i:int = 0 ; i &lt; childrenLen; i++) result += "-&gt;"+getNames(xml.children()[i]); return result; 你应该能够通过循环实现同样的效果......关于递归,这是一个简单的问题,而不是效率 @GeorgeProfenza 我正在使用您的代码。我会告诉它是否有效。 【参考方案1】:

为什么不使用 E4X?在这里你可以找到一些解释: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e72.html

【讨论】:

抱歉回复晚了,我试试看。

以上是关于如何找到 xml 对象的第 N 个元素的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 MIPS 中的第二个最小值?

如何在php中取消设置xml元素?

在MongoDB中获取数组的第n个元素

在MongoDB中获取数组的第n个元素

如何在目标c中获得该月的第n个星期日日期?

如何遍历列表的前 n 个元素?