我在創建一個幫助器方法的過程中,該方法將允許我遍歷XML文檔並將每個元素放入數據HashMap中,然後將其返回。這是我一直在工作方法:如何使靜態遞歸方法返回一個HashMap?
private static HashMap<String, String> traverseNodes(Node n, HashMap<String,String> data)
{
NodeList children = n.getChildNodes();
if(children != null) {
for(int i = 0; i < children.getLength(); i++) {
Node childNode = children.item(i);
String nodeName = childNode.getNodeName();
if(childNode instanceof Element)
{
data.put(nodeName, getStringByTag(nodeName, (Element)childNode));
Log.d("traversal", childNode.getNodeName() + " was saved in hashmap");
}
else
Log.d("traversal", childNode.getNodeName() + " Is not an Element type");
System.out.println("node name = " + childNode.getNodeName());
traverseNodes(childNode, data);
}
}
return data;
}
我試圖運行的例子,雖然我得到的消息說,「childNode.getNodeName()+‘被保存在HashMap中’,但HashMap中返回空。
我在做什麼錯
編輯紅利問題:?!我編輯的代碼以反映更改建議看來,然而,該方法本身不救我的XML文檔的值。 。該方法中的邏輯是否有問題?
您正在爲遞歸方法的每次調用創建一個新的HashMap。這是你的意圖嗎? –
如果這樣使用'data.addAll(traverseNodes(childNode));'作爲遞歸調用。雖然效率不高。 – predi