项目中通过webservice获取的内容都是xml的字符串,每次解析这些字符串比较麻烦,就写了个方法将xml文本解析成List<Map<String,String>格式
/** * 将xml文件或者xml字符串解析成List<Map<String,String> * @param pathOrstr 路径或者xml文本 * @param type=path 表示传入的是一个路径 type=text 表示传入的是一个文本 * @return */ private static List<Map<String,String>> getXMLMapList(String pathOrstr,String type){ SAXReader reader=new SAXReader(); List<Map<String,String>> listMap=null; try { Document doc=null; if("path".equals(type)){ doc=reader.read(pathOrstr); }else if("text".equals(type)){ doc=DocumentHelper.parseText(pathOrstr); }else{ throw new RuntimeException("请传入正确的参数"); } //获取根节点,这里可以修改成任意的某个节点 Element root=doc.getRootElement(); listMap=new ArrayList<Map<String,String>>(); //遍历根节点下的第一级节点 for(Element e:root.elements()){ Map<String,String> map=new HashMap<String, String>(); //遍历节点中的属性 for(Iterator attIt=e.attributeIterator();attIt.hasNext();){ Attribute attr=(Attribute)attIt.next(); //将属性名和属性值封装到map中 map.put(attr.getName(), attr.getText()); } listMap.add(map); } } catch (DocumentException e) { e.printStackTrace(); } return listMap; }
测试
public static void main(String[] args) { String path="src/test.xml"; List<Map<String, String>> pathListMap = getXMLMapList(path,"path"); System.out.println(pathListMap); String xmlStr="<?xml version='1.0' encoding='UTF-8'?><root><node id='1' title='标题一' telphone='15652000269'/><node id='2' title='标题二' telphone='13141144033'/></root>"; List<Map<String, String>> strListMap = getXMLMapList(xmlStr, "text"); System.out.println(strListMap); }
打印出的内容
[{id=1, title=标题一, telphone=15652000269}, {id=2, title=标题二, telphone=13141144033}] [{id=1, title=标题一, telphone=15652000269}, {id=2, title=标题二, telphone=13141144033}]
文章评论