2012-03-18 3 views
0

私の目的はノードを一度にNodeListに追加するのではなく、各繰り返しでループに追加することです。私はNodeListのクラスとメソッドを探しましたが、何の役に立つものも見つけられませんでした。とにかくこれをやっているのですか、他のインターフェースを使うべきですか? 以下のようなことが起こりますが、NodeListインターフェイスには「追加」メソッドがありません。どのようにアイテムを追加できますか?ノードリストにノードを追加する

 static NodeList tryToGetThePoint; 


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

tryToGetThePoint.add=myNode; 

} 
+0

@deporterもちろんNodeList – lonesome

+0

*「もちろん」*なぜ誰かがそれが明白であるかどうか尋ねるだろうか?将来J2SEクラスの正しい大文字小文字を使用するように注意してください。 –

+0

それと幸運。 –

答えて

0

これについての重要なビットです:

は「NodeListのインタフェースがこのコレクションの実装方法を定義または制限することなく、順序付けられたノードのコレクションの抽象化を提供します。」

要するに、すべてを実装するのはあなた次第です。

代わりにリストを使用することはできませんか?つまり、これが何のためにあるのかによって異なります。

自分で実装したい場合は、おおよその方法です。

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

あなたの例は少し失われています - 項目とgetLengthメソッドはどこですか?そしてなぜNodeも実装していますか?そうでなければ、私は同意する。 –

+0

ええ、私はちょっと混乱しました。 Lemme edit ... –

+0

最後に固定されました。 –

3

あなたはNodeList内のノードは、ライブであることを覚えている - あなたがそれらを変更する場合は、基礎となるDOMツリーを変更しています。したがって、実際にはNodeListに物を追加することは意味がありません - あなたはそれらが木の中でどこに住んでいると思いますか?

Nodeのリストをドキュメントと非接続にしたい場合は、List<Node>を使用してください。それ以外の場合は、ノードをDOMツリーに追加する場所を特定し、通常の方法を使用する必要があります。

更新:NodeListを宣言していたことに気がつかなかった。ペリーMonschau氏が言うように、自分で実装しない限り動作しません。代わりにList<Node>を使用してください。

+0

ああ、私は参照してください。うん、私はノードのリストが欲しかったが、NodeListがそれをやることができるかどうか疑問に思った。あなたのアドバイスに感謝します:) – lonesome

+0

はい、NodeListは実際にはさまざまなDOMメソッドの戻り値の型です。 –

関連する問題