2011-11-29 59 views
-1

我想插入节点从程序的其他部分获取到NodeList中。对于循环错误

static void NodeCheck(Node node) 
{ 

    NodeList NodeArray = null; 
    for(int i=0;NodeArray.getLength()<=i;i++) 
    { 
     NodeArray.item(i)=node; 
    } 
} 

在这里,NetBeans给我的错误,我需要一个变量在这里没有价值。解决方案是什么?

编辑:好的,我们改变这个

NodeList NodeArray = null; 

     NodeArray.item(0)=node; 

没有迭代,仍然同样的错误,,,,

编辑NO.2: 让我做我的问题更加清晰,如何能我将节点(单个节点)插入类似数组的东西?蚂蚁想法?做到这一点的原因是将它们相互比较以查看它们相同或不同的天气...

+3

对于初学者来说,您正在调用空值的方法。 – Ger

+0

'NodeArray.item(i)= node'? –

+0

解决方案可能是读一些书。即使NodeArray被初始化,该代码也没有意义。 –

回答

2

此行将设置NodeArray为null。

NodeList `NodeArray` = null; 

在你试图调用这个NodeArray是空的方法下一行,这可不行。

NodeArray.getLength() 

您必须将NodeArray正确初始化为非空值。

+0

该代码甚至没有编译,所以运行时NPE甚至没有被抛出 –

0

您不能插入到org.w3c.dom.NodeList。使用适当的元素方法org.w3c.dom.Node#appendChild

0

它可能是nullPointerException,因为当您调用length()方法时,NodeArray为null。

0

我认为你的第一个问题是,NodeArray是空的,你不能查看在空元素的属性...尝试做这样的事情:

NodeList NodeArray = new NodeList(); 
+0

org.w3c.dom。NodeList是一个接口。你的代码不起作用。 – flash

+0

哦,我以为他创建了自己的名为NodeList的类(没有导入语句)......如果他使用的是接口......问题不同...... –

0

您必须分配“nodeArray”,也会在“NodeArray.getLength()”行上得到NullPointerException。 我还建议按小写(按惯例)启动变量和函数名称。

static Node rootNode; 
static void nodeCheck(Node node) 
{ 
    NodeList nodeArray = rootNode.getChildNodes(); // if rootNode==null -> NullPointerException 
    for(int i=0;nodeArray.getLength()<=i;i++) // if nodeArray==null -> NullPointerException 
    { 
     //replace child of rootNode by node 
     rootNode.replaceChild(node,nodeArray.item(i));   
    } 
    //add child to rootNode 
    rootNode.appendChild(node); 
} 

最好的问候, 朱利安

+0

1.'NodeList'是一个接口。 2.'nodeArray.item(i)= node'不会起作用,因为它是一个getter方法。 – flash

+0

谢谢@flash,我不知道接口,我只是查看NullPointerException。我纠正了我的答案。 –

0

当你什么都没有,你是迭代它,它会导致空指针。

在迭代之前应该初始化NodeList

0

您不能使用NodeList.item(i)来分配值。而是使用一些适当的容器用于此目的,请访问此链接以获取更多详细信息Create XML document using nodeList