将xml文件或xml字符串解析成List

2014/01/21 2238点热度 0人点赞 0条评论

项目中通过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}]

yxkong

这个人很懒,什么都没留下

文章评论