How to Improve xml parsing in GWT ?
My xml is as follows with 1 record
To parse 100 Record GWT takes 8 sec
Is there any way to improve performance ? Plz see my gwt code to parse xml
< Record productid="0" productidext="0" productkeyid="16000" productversion="1" isFEDRecord="false" validationstatus="" selected="false" accessmode="modify" isedited="false">
< RecordAttribute name="CINTEGERATTR" edited="false">
< Value>12345678< /Value>
< OldValue>12345678< /OldValue>
< /RecordAttribute>
< /Record>
My GWT parsing code is as follows:
private static List parseRecords(Document mainDOM, List records) { NodeList recordNodeList = mainDOM.getElementsByTagName("Record"); //Record node RecordInfo recordInfo= null;
for(int i=0;i<recordNodeList.getLength();i++){ //iteration over record node
recordInfo = new RecordInfo();
recordInfo.setColumnCount(columnInfoList.size());
recordInfo.setColumnInfoList(columnInfoList);
HashMap<String, String> recordsColumnValueHashMap = new HashMap<String, String>();
Element element = ((Element)recordNodeList.item(i)); //Record node
NamedNodeMap recNodeMap = recordNodeList.item(i).getAttributes();
if(i==0){
}else{
recordInfo.setProductid(recNodeMap.getNamedItem("productid").getNodeValue());
recordInfo.setProductidext(recNodeMap.getNamedItem("productidext").getNodeValue());
recordInfo.setProductkeyid(recNodeMap.getNamedItem("productkeyid").getNodeValue());
recordInfo.setProductversion(Integer.parseInt(recNodeMap.getNamedItem("productversion").getNodeValue()));
recordInfo.setFEDRecord(Boolean.parseBoolean(recNodeMap.getNamedItem("isFEDRecord").getNodeValue()));
recordInfo.setValidationstatus(recNodeMap.getNamedItem("validationstatus").getNodeValue());
recordInfo.setSelected(Boolean.parseBoolean(recNodeMap.getNamedItem("selected").getNodeValue()));
recordInfo.setAccessmode(recNodeMap.getNamedItem("accessmode").getNodeValue());
recordInfo.setIsedited(recNodeMap.getNamedItem("isedited").getNodeValue());
NodeList recList = element.getElementsByTagName("RecordAttribute");
for(int j=0;j<recList.getLength();j++){ //iterating all record attributes
NodeList child = recList.item(j).getChildNodes();
recordInfo.setColumnNameInRecord(recList.item(j).getAttributes().getNamedItem("name").getNodeValue()); recordInfo.setColumnInRecordEdited(Boolean.parseBoolean(recList.item(j).getAttributes().getNamedItem("edited").getNodeValue())); for(int k=0;k
if("Value".equalsIgnoreCase(child.item(k).getNodeName())){
if(child.item(k).getFirstChild()!=null){
String value = child.item(k).getFirstChild().getNodeValue();
//System.out.println("Value = "+child.item(k).getFirstChild().getNodeValue());
recordInfo.setValue(value);
String columnName = recList.item(j).getAttributes().getNamedItem("name").getNodeValue();
recordsColumnValueHashMap.put(columnName, value);
}
}
if("OldValue".equalsIgnoreCase(child.item(k).getNodeName())){
if(child.item(k).getFirstChild()!=null){
String oldValue = child.item(k).getFirstChild().getNodeValue();
//System.out.println("oldValue ="+child.item(k).getFirstChild().getNodeValue());
recordInfo.setOldValue(oldValue);
}
}
}
}
recordInfo.setRecordHashMap(recordsColumnValueHashMap);
}
records.add(recordInfo);
}
return records;
}