我們可以簡單地使用Xstream進行映射。
XStream xStream = new XStream(new DomDriver());
xStream.alias("Employees", Employees.class);
xStream.registerConverter(new MapEntryConverter());
employeesMap = (Map<String, String>) xStream.fromXML(queryXML);
創建一個轉換器和解組XML要映射的對象
private static class MapEntryConverter implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Employees.class);
}
public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
AbstractMap<String, String> map = (AbstractMap<String, String>) value;
for (Map.Entry<String, String> entry : map.entrySet()) {
writer.startNode(entry.getKey().toString());
writer.setValue(entry.getValue().toString());
writer.endNode();
}
}
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
Map<String, String> map = new HashMap<String, String>();
while (reader.hasMoreChildren()) {
reader.moveDown();
map.put(reader.getAttribute(1), reader.getValue());
reader.moveUp();
}
return map;
}
}
如下創建員工和僱員類。
private class Employees{
List<Employee> employees;
}
private class Employee{
private String id;
private String value;
}
希望這對你的作品。
使用JDOM並逐一添加到'地圖<字符串,整數>'全體員工的條目。 – jn1kk 2012-08-08 19:45:36
你有什麼嘗試?你知道SAX,DOM,XPATH等之間的區別...請在發佈之前搜索stackoverflow。我認爲這個問題已經回答了大約1000次。 – 2012-08-08 20:02:10