2011-11-29 60 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