【问题标题】:E4X get element's next siblingE4X 获取元素的下一个兄弟
【发布时间】:2010-01-19 14:14:06
【问题描述】:

我有一个 XML 节点的引用,它是更大的 XML 树的一部分。有没有办法在不访问父级并寻找它的情况下获取下一个/上一个兄弟元素?像 DOM 的 nextSibling 这样的东西就是我要寻找的东西。

编辑: 鉴于 E4X 没有自然的方法可以做到这一点,我将坚持以下(除了在我的情况下,我会将实际索引存储在某个地方) :

// next sibling:
node.parent().children()[ node.childIndex() + 1 ]
// previous sibling:
node.parent().children()[ node.childIndex() - 1 ]

【问题讨论】:

    标签: xml actionscript-3 e4x


    【解决方案1】:

    我在 ECMA-357 第 2 版中没有看到任何此类方法。此外,“兄弟姐妹”似乎没有出现在我的标准副本中的任何地方。如果存在任何此类方法,它们之所以存在,是因为 Adob​​e 将它们作为扩展添加到规范中。

    【讨论】:

    • 太糟糕了。我想我必须将节点的索引存储在某个地方才能有效地浏览它。感谢您在标准中查找它:)
    • 公平地说,DOM 本身在算法上是低效的。请注意 W3C DOM 中存在两种不同的访问子元素的方法,即同级访问和索引访问。支持任何一个都可以让您使用某些习语快速访问元素(例如,下一个、上一个、父级、第一个子级、最后一个子级的兄弟;父级和子级数组的索引)。支持这两种方式意味着你不可避免地会加速一个习语,有时(模数技巧)会减慢另一个习语。 E4X 仅支持索引访问避免了这个问题(以需要基于索引的算法为代价)。
    【解决方案2】:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2015-08-05
    • 2015-06-24
    • 2017-06-02
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多