我有一個XML節點的引用,它是更大的XML樹的一部分。有沒有辦法獲得該元素的下一個/上一個兄弟沒有訪問父母並尋找它?像DOM的nextSibling
就是我所期待的。E4X獲取元素的下一個兄弟
編輯:鑑於存在與E4X做到這一點不自然的方式,我就堅持以下(除了在我的情況,我會存儲實際的指標,而不是某個地方):
// next sibling:
node.parent().children()[ node.childIndex() + 1 ]
// previous sibling:
node.parent().children()[ node.childIndex() - 1 ]
太糟糕了。我想我必須將節點的索引存儲在某個地方,以便高效地瀏覽它。感謝您在標準中查找它:) – poke 2010-01-19 14:27:28
公平地說,DOM本身在算法上效率低下。注意W3C DOM中存在兩種不同的訪問子元素的方法,用於兄弟智能和索引智能訪問。支持或者給你快速的元素訪問(與下一個,上一個,父母,第一個孩子,最後一個孩子,說;與父母和一個孩子的數組索引明智的兄弟姐妹)與某些成語。支持這兩種方式意味着你不可避免地加快一個習慣用法,有時(模數技巧)會減慢另一個習慣用法。僅支持索引訪問的E4X避免了該問題(以需要基於索引的算法爲代價)。 – 2010-01-19 14:38:16