public static HashMap parse(InputStream in) throws Exception {
HashMap propertyMap = new HashMap();
SAXReader reader = new SAXReader();
Document document = reader.read(in);
Element root = document.getRootElement();
Iterator i = root.elementIterator( "windowId ");
while(i.hasNext()) {
Element windowElement = (Element) i.next();
Attribute attribute = windowElement.attribute( "name ");
String windowId = attribute.getStringValue();
List propertyList = new ArrayList();
for (Iterator j = windowElement.elementIterator( "property " );j.hasNext();){
Element propertyElement = (Element) j.next();
propertyList.add(propertyElement.getStringValue());
}
System.out.println(windowId);
for(int k=0;k <propertyList.size();k++){
System.out.println(propertyList.get(k));
}
propertyMap.put(windowId,propertyList);
}
return propertyMap;
}
从配置文件中读取每个windowId的property属性值,将windowId作为key,
该windowId的property组成的list为value,存进HashMap中,
从console输出的信息看,读取文件不存在任何问题,且每个windowId均不相同,为何存放了10次,而最后HashMap中只有8个呢?
------解决方案--------------------
顶你
------解决方案--------------------
ding
------解决方案--------------------
帮忙顶
------解决方案--------------------
樓主你把存放的值和輸出的值比較一下就知道了
會不會是有相同的值,然後只存放了一個。
------解决方案--------------------
好像HashMap不允许有相同的key。
------解决方案--------------------
存放第10个时会覆盖掉第8个,每次debug都这样
------解决方案--------------------
mark
------解决方案--------------------
那你用Hashtable测试下
相对于HashMap Hashtable是线程安全的
------解决方案--------------------
帮忙顶
------解决方案--------------------
可以把输入文件贴上来看下嘛
------解决方案--------------------
sysout(windowID);
------解决方案--------------------
你打印的值分不清哪个是windowID,每次输出windowID看看,应该是这个有重复,或者都是null值,否则不可能覆盖的。
------解决方案--------------------
靠,看清楚楼主的话再回答阿
System.out.println(windowId);
for(int k=0;k <propertyList.size();k++){
System.out.println(propertyList.get(k));
}
-------------------------------------------
============Gen0010XXXXX=============
materialName
averageSize
quantity
packagedForm
expectedDate
============Gen0020XXXXX=============
supplierDeliveryDate
orderNo
materialName
averageSize
orderAmount
unit
unitCost
amount
resultMessage
============Gen0030XXXXX=============
arrivalQuantity
markerLotNo
division
loss
orderNo
materialName
averageSize
orderAmount
unit
unitCost