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