全栈工程师开发手册 (作者:栾鹏)
java教程全解
java实现map使用功能函数:对象转换为map、xml字符串转化为map
1、将对象的所有属性转化为map键值对
2、转换对象为map,并忽略某些属性
3、将只有根节点和一级子节点的xml字符串 转换为 Map
测试代码
当前类的名称为MapUtil
int a=10;
String b="das";
public static void main(String[] args) {
MapUtil ob=new MapUtil();
Map<String, Object> map=object2map(ob); //将对象所有属性值转化为map
System.out.println(map);
Map<String, String> map1=object2map(ob,"a"); //将对象排数部分属性后转换为map
System.out.println(map1);
String xmlstr = "<book><title>Java实例一百例</title><page>基础知识篇</page></book>"; //将简单的只有两级的xml字符串转化为map
Map<String, String> map2=xml2map(xmlstr);
System.out.println(map2);
xmlstr = map2xml(map1); //将map转化为xml
System.out.println(xmlstr);
}
将对象的所有属性转化为map键值对
public static Map<String,Object> object2map(Object object){
Map<String,Object> map = new HashMap<String, Object>();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
Object obj;
try {
obj = field.get(object);
if(obj!=null){
map.put(field.getName(), obj);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return map;
}
转换对象为map,并忽略某些属性
public static Map<String,String> object2map(Object object,String... ignore){
Map<String,String> tempMap = new LinkedHashMap<String, String>();
for(Field f : object.getClass().getDeclaredFields()){
if(!f.isAccessible()){
f.setAccessible(true);
}
boolean ig = false;
if(ignore!=null && ignore.length>0){
for(String i : ignore){
if(i.equals(f.getName())){
ig = true;
break;
}
}
}
if(ig){
continue;
}else{
Object o = null;
try {
o = f.get(object);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
tempMap.put(f.getName(), o==null?"":o.toString());
}
}
return tempMap;
}
只有根节点和一级子节点的xml字符串 转换为 Map
public static Map<String,String> xml2map(String xml){
try {
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes()));
Element element = document.getDocumentElement();
NodeList nodeList = element.getChildNodes();
Map<String, String> map = new LinkedHashMap<String, String>();
for(int i=0;i<nodeList.getLength();i++){
Element e = (Element) nodeList.item(i);
map.put(e.getNodeName(),e.getTextContent());
}
return map;
} catch (DOMException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Map转xml数据
public static String map2xml(Map<String,String> param){
StringBuffer sb = new StringBuffer();
sb.append("<xml>");
for (Map.Entry<String,String> entry : param.entrySet()) {
sb.append("<"+ entry.getKey() +">");
sb.append(entry.getValue());
sb.append("</"+ entry.getKey() +">");
}
sb.append("</xml>");
return sb.toString();
}