Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将节点添加到节点列表_Java_Loops_Nodes_Nodelist - Fatal编程技术网

Java 将节点添加到节点列表

Java 将节点添加到节点列表,java,loops,nodes,nodelist,Java,Loops,Nodes,Nodelist,我的目标不是立即将节点添加到节点列表,而是在每次迭代中将它们添加到循环中。我查找了NodeList的类和方法,但没有找到任何有用的东西。是否有这样做的方法,或者我应该使用其他接口? 要执行以下操作,但NodeList接口没有“add”方法。那么如何添加项目 static NodeList tryToGetThePoint; while(true) { . . . if(!"script".equals(m

我的目标不是立即将节点添加到节点列表,而是在每次迭代中将它们添加到循环中。我查找了NodeList的类和方法,但没有找到任何有用的东西。是否有这样做的方法,或者我应该使用其他接口? 要执行以下操作,但NodeList接口没有“add”方法。那么如何添加项目

     static NodeList tryToGetThePoint;


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

tryToGetThePoint.add=myNode;

}

您必须记住,
NodeList
中的节点是活动的-如果您更改它们,您就是在修改底层DOM树。因此,将东西添加到
节点列表中是没有意义的-您希望它们在树中的位置

如果您只需要一个与文档未连接的
节点的列表,只需使用
list
。否则,您将需要确定将节点添加到DOM树的位置,并使用常规方法


更新:我没有注意到您正在声明
节点列表
——除非您像Perry Monschau所说的那样自己实现它,否则这不会起作用。只需使用
列表

您必须记住,
NodeList
中的节点是活动的-如果您更改它们,您就是在修改底层DOM树。因此,将东西添加到
节点列表中是没有意义的-您希望它们在树中的位置

如果您只需要一个与文档未连接的
节点的列表,只需使用
list
。否则,您将需要确定将节点添加到DOM树的位置,并使用常规方法


更新:我没有注意到您正在声明
节点列表
——除非您像Perry Monschau所说的那样自己实现它,否则这不会起作用。只需使用
列表

关键在于:

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;
    }
}
公共类MyNodeList实现NodeList{
节点根=空;
整数长度=0;
公共MyNodeList(){}
公共void addNode(节点){
if(root==null)
根=节点;
其他的
root.addChild(节点);
长度++;
}
公共节点项(int索引){
if(索引<1)返回根;
节点=根;
而(索引>0){
node=node.getFirstChild();
如果(node==null)返回节点;
索引--;
}
返回节点;
}
公共整数getLength(){
返回长度;
}
}

这方面的关键是:

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;
    }
}
公共类MyNodeList实现NodeList{
节点根=空;
整数长度=0;
公共MyNodeList(){}
公共void addNode(节点){
if(root==null)
根=节点;
其他的
root.addChild(节点);
长度++;
}
公共节点项(int索引){
if(索引<1)返回根;
节点=根;
而(索引>0){
node=node.getFirstChild();
如果(node==null)返回节点;
索引--;
}
返回节点;
}
公共整数getLength(){
返回长度;
}
}

@驱逐者当然是节点主义者“当然”为什么有人会问这是否显而易见?请以后在J2SE类中使用正确的case时多加注意。为什么会有否决票?这似乎是一个合理的问题。@Decler当然是一个NodeList“当然”为什么会有人问这是否显而易见?请以后在J2SE类中使用正确的case时多加注意。为什么会有否决票?似乎是个合理的问题。哦,我明白了。是的,我想要一个节点列表,但只是想知道NodeList是否也能做到。谢谢您的建议:)是的,NodeList实际上只是各种DOM方法的返回类型。是的,我想要一个节点列表,但只是想知道NodeList是否也能做到。谢谢你的建议:)是的,NodeList实际上只是各种DOM方法的返回类型。你的示例让我有点不知所措-item和getLength方法在哪里?为什么还要实现Node呢?否则,我同意。不过,我会使用一个底层列表,这当然会让整个节点列表变得毫无意义。当您有2个以上的项时,它就会分解,因为所有项都作为子项添加到根中,但是当调用“item(int index)”时,它将用于子项的子项,等等。很抱歉,无法在RUSH中更好地解释这一点。您的示例让我有点不知所措-item和getLength方法在哪里?为什么还要实现Node呢?否则,我同意。不过,我会使用一个底层列表,这当然会让整个节点列表变得毫无意义。一旦有2个以上的项,它就会分解,因为所有项都作为子项添加到根中,但是当调用“item(int-index)”时,它将用于子项的子项,等等。抱歉,很快无法更好地解释这一点