Как улучшить синтаксический анализ XML в GWT?
Мой xml выглядит следующим образом с 1 записью
Для разбора 100 Запись GWT занимает 8 секунд
Есть ли способ улучшить производительность? Пожалуйста, смотрите мой код gwt для разбора xml
<Значение> 12345678 </ Значение>
12345678
</ Запись>
Мой код анализа GWT выглядит следующим образом:
приватный статический список parseRecords (Document mainDOM,
Список записей) {
NodeList recordNodeList = mainDOM.getElementsByTagName ("Запись"); // Запись узла
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 (к) .getAttributes () getNamedItem ( "имя") getNodeValue ()..);
recordInfo.setColumnInRecordEdited (Boolean.parseBoolean (recList.item (J) .getAttributes () getNamedItem ( "изм") getNodeValue ())..);
для (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;
}