2010-01-19 2 views
1

더 큰 XML 트리의 일부인 XML 노드에 대한 참조가 있습니다. 부모에게 액세스하지 않고 그 다음/이전 형제를 얻을 수있는 방법이 있습니까? DOM의 nextSibling과 같은 것이 내가 찾는 것입니다.E4X 요소의 다음 형제 입력

편집 : E4X이 작업을 수행 할 자연적인 방법이 없다는 것을 감안할 때, 난 그냥 (즉, 내 경우에는, 내가 어딘가 대신 실제 인덱스를 저장하는 것 제외) 다음과 스틱 것 :

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

답변

1

나는 ECMA-357, 제 2 판에서 이러한 방법을 볼 수 없습니다. 또한 "형제"는 내 표준 사본에 아무데도 나타나지 않는 것 같습니다. 그러한 방법이 존재하는 경우, Adobe는 스펙을 확장하여 추가했기 때문에 존재합니다.

+0

너무 나쁨. 내 노드의 인덱스를 저장 한 다음 어딘가에 효율적으로 탐색해야합니다. 표준으로 찾아 주셔서 감사합니다 :) – poke

+1

공정하기 때문에 DOM 자체는 알고리즘 적으로 비효율적입니다. 형제 위주 및 인덱스 방식 액세스를 위해 W3C DOM에서 하위 요소에 액세스하는 두 가지 다른 메소드가 어떻게 존재하는지주의하십시오. 어느 쪽이든을 지원하면 특정 관용구를 사용하여 빠른 요소 액세스 (형제와 다음, 이전, 부모, 첫 번째 자식, 마지막 자식, 말하기, 부모 및 자식 배열과 인덱스 형)를 제공합니다. 두 가지 모두를 지원한다는 것은 필연적으로 하나의 관용구를 가속화하고 때로는 (모듈러 트릭) 다른 것을 천천히 말하는 것을 의미합니다. 인덱스 방식 액세스 만 지원하는 E4X는 이러한 문제를 피할 수 있습니다 (인덱스 기반 알고리즘을 필요로하는 비용). –

0
+0

XML 객체를 XMLNode로 변환 할 수 없기 때문에 실제로는 그렇지 않습니다. (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/XML.html) – poke

+0

물론 가능합니다 : new XMLDocument (xml.toString()); –

+0

충분 : P -하지만 E4X XML 트리와 DOM 트리를 갖출만큼 효율적이라고는 생각하지 않습니다. – poke