怎么把这xml解释后,按属性param_name名,一条一条存进数据库

J2EE 码拜 6年前 (2015-04-08) 405次浏览 0个评论
 

<output>
<resultcode>0</resultcode>
<reason>结果描述</reason>
<!–如果成功并且有返回结果集,结果集如下描述–>
<results sets=”2″>
<!–m 行n 列的结果集–>
<result rows=”2″ cols=”20″ set_id=”201″>
<!–param_name:参数名称–>
<row rownum=”1″>
<col param_name=”20052001″><![CDATA[工单ID]]></col>
<col param_name=”20052002″><![CDATA[工单编码]]></col>
<col param_name=”20052003″><![CDATA[创建时间]]></col>
<col param_name=”20052004″><![CDATA[诉求标题]]></col>
<col param_name=”20052005″><![CDATA[“诉求内容”]]></col>
<col param_name=”20052006″><![CDATA[诉求来源]]></col>
<col param_name=”20052007″><![CDATA[事项名称]]></col>
<col param_name=”20052008″><![CDATA[事项目录名称]]></col>
<col param_name=”20052009″><![CDATA[工单当前环节]]></col>
<col param_name=”20052010″><![CDATA[到达当前环节的时间]]></col>

</row>
<row rownum=”2″>
<col param_name=”20052001″><![CDATA[工单ID]]></col>
<col param_name=”20052002″><![CDATA[工单编码]]></col>
<col param_name=”20052003″><![CDATA[创建时间]]></col>
<col param_name=”20052004″><![CDATA[诉求标题]]></col>
<col param_name=”20052005″><![CDATA[“诉求内容”]]></col>
<col param_name=”20052006″><![CDATA[诉求来源]]></col>
<col param_name=”20052007″><![CDATA[事项名称]]></col>
<col param_name=”20052008″><![CDATA[事项目录名称]]></col>
<col param_name=”20052009″><![CDATA[工单当前环节]]></col>
<col param_name=”20052010″><![CDATA[到达当前环节的时间]]></col>

</row>
</result>
</results>
</output>

求各位大神,怎么把这xml解释后,按属性param_name名,一条一条存进数据库?最好有例子。谢谢大家

怎么把这xml解释后,按属性param_name名,一条一条存进数据库
楼主就别想要例子了

自己用dom4j解析吧

怎么把这xml解释后,按属性param_name名,一条一条存进数据库
100分
//按照你的xml格式,用dom4j做的解析.,插入数据都不会的,自己百度
	public static void main(String[] args) throws Exception {

		String readStr = "";
		String text = "";
		FileReader fr = new FileReader(
				"C:\Users\Administrator\Desktop\cal.html");
		BufferedReader br = new BufferedReader(fr);
		while ((readStr = br.readLine()) != null) {
				text += readStr;
		}
		//读取完成xml
		System.out.println(text);
		Element element = getXmlRoot(text);
		Map map = new HashMap();
		parse(element, null, map);

		System.out.println(map.get("reason"));
		List list = (List)map.get("results");
		//遍历数据数据
		for(Object o:list){
			Map m = (Map)o;
			System.out.println(m.get("20052001"));
			System.out.println(m.get("20052002"));
		}
	}

	public static Element getXmlRoot(String str) throws DocumentException,
			IOException {
		StringReader sr = new StringReader(str);
		SAXReader saxReader = new SAXReader();
		Document doc = saxReader.read(sr);
		Element root = doc.getRootElement();
		return root;
	}

	//为了方便采用map封装,也可以用自己的javabean
	public static void parse(Element element, Element father,Map map) {

		if(father!=null){
			if("output".equals(father.getName())){
				if ("resultcode".equals(element.getName())||"reason".equals(element.getName())) {
					map.put(element.getName(), element.getStringValue());
				} 
			}
			//如果父节点是reslut,则当前节点是row,
			if("result".equals(father.getName())){
				String rownum = element.attributeValue("rownum");
				//对row下的元素遍历封装
				List<Element> elements = element.elements();
				Map<String,String>  m = new HashMap<String,String>();
				if (elements.size() > 0) {
					for (Element elem : elements) {
						if("col".equals(elem.getName())){
							m.put(elem.attributeValue("param_name"),elem.getStringValue());
						}
					}
				}
				List list = (List)map.get("results");
				if(list==null){
					list=new ArrayList();
				}
				list.add(m);
				map.put("results",list);
				return;
			}

		}


		// 有子元素
		List<Element> elements = element.elements();
		if (elements.size() > 0) {
			for (Element elem : elements) {
				// 递归遍历
				parse(elem, element,map);
			}
		}

	}



CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么把这xml解释后,按属性param_name名,一条一条存进数据库
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!