我試圖給一個空的XML節點賦值,但似乎沒有工作。我的XML結構是這樣:Java爲XML節點賦值
<createCustomer>
<customerAttributes>
<firstName></firstName>
<lastName></lastName>
</customerAttributes>
</createCustomer>
我試圖分配在下面的代碼名字和姓氏:
private void createXML(Document skeleton, Map params) {
skeleton.getDocumentElement().normalize();
NodeList customerNodes = skeleton.getElementsByTagName("customerAttributes");
for(int i=0; i<customerNodes.getLength(); i++) {
NodeList children = customerNodes.item(i).getChildNodes();
for(int j=0; j<children.getLength(); j++) {
String childNode = children.item(j).getNodeName();
if(childNode.equalsIgnoreCase("firstName")){
children.item(j).setNodeValue(String.valueOf(params.get("fname")));
System.out.println(children.item(j));
}
else if (childNode.equalsIgnoreCase("lastName")){
children.item(j).setNodeValue(String.valueOf(params.get("sname")));
System.out.println(children.item(j));
}
}
}
}
}
打印報表的輸出是:
firstname: null
surname: null
但我確定地知道map中的值是正確的,因爲print語句輸出預期的地圖值。另外,如果我用硬編碼字符串替換params.get("string")
,我仍然得到輸出:firstname: null
。該代碼不會拋出任何異常。我也試着setTextContent
但是,這並不工作,要麼
檢查您貼上了正確的代碼段;外環似乎重複;另外,粘貼例外,如果有的話,是有用的 –
@guido謝謝我已經格式化的代碼更容易閱讀。代碼沒有給出任何例外,它建立並運行正常 – adohertyd