2012-03-18 4 views
0

내 목표는 NodeList에 즉시 노드를 추가하는 것이 아니라 반복 할 때마다 루프에 추가하는 것입니다. 내가 NodeList에 대한 클래스와 메소드를 찾았지만 아무것도 유용하지 않았다. 어쨌든이 작업을 수행 중이거나 다른 인터페이스를 사용해야합니까? 아래처럼 뭔가 할거야하지만 NodeList 인터페이스는 "add"method.then을 가지고 있지 않아 어떻게 항목을 추가 할 수 있습니까? 당신이 기본 DOM 트리를 수정하고이를 변경하는 경우 -nodelist에 노드 추가

 static NodeList tryToGetThePoint; 


    while(true) 
     { 
     . 
     . 
     . 
    if(!"script".equals(myNode.getParentNode().getNodeName())) 
{ 

tryToGetThePoint.add=myNode; 

} 
+0

@deporter NodeList를 – lonesome

+0

* "물론"* 왜 누군가가 물어 보곤? 향후 J2SE 클래스에 대해 정확한 대소 문자를 사용하도록주의하십시오. –

+0

행운을 빈다. –

답변

0

이것에 대해 중요한 비트는 다음과 같습니다

는 "노드 목록의 인터페이스는이 컬렉션의 구현 방법을 정의 또는 제약없이, 순서 붙일 수 있었던 노드의 컬렉션의 추상화를 제공한다."

요약하면 모든 것을 구현하는 것은 사용자의 몫입니다.

대신 목록을 사용할 수 있습니까? 내 말은, 이것이 무엇을위한 것인가에 달려있다.

하지만 직접 구현하고 싶다면 대략적인 방법입니다. 그것은 분명 있다면 물론

public class MyNodeList implements NodeList { 
    Node root = null; 
    int length = 0; 
    public MyNodeList() {} 

    public void addNode(Node node) { 
     if(root == null) 
      root = node; 
     else 
      root.addChild(node); 
     length++; 
    } 

    public Node item(int index) { 
     if(index < 1) return root; 
     Node node = root; 
     while(index > 0) { 
      node = node.getFirstChild(); 
      if(node == null) return node; 
      index--; 
     } 
     return node; 
    } 

    public int getLength() { 
     return length; 
    } 
} 
+0

당신의 예제는 약간 잃어 버렸습니다 - item과 getLength 메소드는 어디에 있습니까? 그리고 Node를 구현하는 이유는 무엇입니까? 그렇지 않으면 동의합니다. –

+0

그래, 나 혼자 혼란 스러웠다. Lemme 편집 ... –

+0

마침내 고정되었습니다. –

3

당신은 NodeList의 노드가 라이브 것을 기억해야합니다. 따라서 NodeList에 물건을 추가하는 것은 실제로 의미가 없습니다 - 나무에 어디에 살기를 기대합니까?

Node의 목록을 문서와 연결하지 않으려면 List<Node> 만 사용하면됩니다. 그렇지 않으면 노드를 DOM 트리에 추가 할 위치를 파악하고 일반적인 방법을 사용해야합니다.

업데이트 : NodeList을 선언했음을 통지하지 못했습니다. 페리 몬샤우 (Patry Monschau)가 말한 것처럼 직접 구현하지 않으면 작동하지 않습니다. 대신 List<Node>을 사용하십시오.

+0

오, 알았어. 참으로 노드 목록을 원했지만 NodeList가 그렇게 할 수 있는지 궁금해했습니다. 귀하의 조언을 주셔서 감사합니다 :) – lonesome

+0

예, NodeList는 실제로 다양한 DOM 메소드의 반환 유형입니다. –