我现在又一个xml文件格式如下:<?xml version=\"1.0\" encoding=\"GB2312\" ?> " +
<returnInfo version=\"1.0\">" +
<items>" +
<item name=\"agentid\" value=\"1111\" /> " +
<item name=\"orderid\" value=\"23333\" /> " +
<item name=\"tranid\" value=\"444\" /> " +
<item name=\"resultno\" value=\"888\" />" +
<item name=\"chargeamt\" value=\"50\" />" +
<item name=\"\" value=\"备注|ERROR0001\" />" +
<item name=\"sing\" value=\"\" />" +
</items>" +
</returnInfo>"我现在需要将的内容读取出来,并保存到hashmap中去,name的值为key ,value的值为value,请问我应该怎么做?谢谢各位
<returnInfo version=\"1.0\">" +
<items>" +
<item name=\"agentid\" value=\"1111\" /> " +
<item name=\"orderid\" value=\"23333\" /> " +
<item name=\"tranid\" value=\"444\" /> " +
<item name=\"resultno\" value=\"888\" />" +
<item name=\"chargeamt\" value=\"50\" />" +
<item name=\"\" value=\"备注|ERROR0001\" />" +
<item name=\"sing\" value=\"\" />" +
</items>" +
</returnInfo>"我现在需要将的内容读取出来,并保存到hashmap中去,name的值为key ,value的值为value,请问我应该怎么做?谢谢各位
解决方案 »
- 100分!hibernate关系映射!
- 用MyEclipse测试jsp程序,有的找不到该页?
- 请给出以下工作流程的processdefinition.xml,部门员工发起一个工单,需要部门领导审批,在部门领导同意后还需要主管领导的批准,如果在指定的三天内一直停留在某个环节,系统需要发送一个E-mail提醒给审批人。 这中题用什么做呢? 高手请指教
- Hibernate version:3.0.5中MySqlDialect是否支持limit命令
- 问一个有JPQL order by 枚举类型的问题!!
- 请教一个关于部署JAR 文件到服务器的问题
- spring mvc运行错误
- jboss集成tomcat 哪里有下啊?
- 60分 ,問個關於hibernate的問題
- Eclipse+lomboz+tomcat设置问题,请高手们帮帮忙!多谢谢!
- 关于TOMCAT服务器问题?
- struts ValueStack的问题
package com.parxml;import org.jdom.*;
import org.jdom.input.*;
import java.io.*;
import java.util.*;/**
* <p>
* Description:本类实现对XML的解析操作
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company:QC
* </p>
*
* @version v1.0
*/public class ParserXML {public ParserXML(){
//构造函数
}/**
* 解析XML到HashMap
*
* @param xml
* String:传入的XML
* @param map
* HashMap:解析后的MAP
* @return HashMap
* @throws JDOMException
* @throws IOException
*/public HashMap XMLToMap(String xml,HashMap<String,String> map) throws JDOMException, IOException {
if(map==null){
map = new HashMap<String, String>();
}
InputStream in = new ByteArrayInputStream(xml.getBytes("gb2312"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(in);
Element root = doc.getRootElement();
boolean tag = elementToMap(root.getChildren(),map);
if(!tag){
map.clear();
}
return map;
}/**
* 把XML的内容的节点取出,转换成 Name = Value (键值对)的形式
*/
private boolean elementToMap(List list, HashMap<String, String> map) {
for (int i = 0; i < list.size(); i++) {
Element emt = (Element) list.get(i);
if (emt.getTextTrim() != null && emt.getTextTrim().length() > 0) {
map.put(emt.getName(), emt.getTextTrim());
}
List listChildern = emt.getChildren();
if (listChildern.size() > 0) {
elementToMap(listChildern, map);
}
}
return true;
}/**
* 转换XML属性值到HashMap
*
* @param xml
* String:传入的XML
* @param map
* HashMap:解析后的MAP
* @return HashMap
* @throws JDOMException
* @throws IOException
*/
public HashMap xmlAttributeToMap(String xml , HashMap<String,String> map) throws JDOMException, IOException{
if(map==null){
map = new HashMap<String, String>();
}
InputStream in = new ByteArrayInputStream(xml.getBytes("gb2312"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(in);
Element root = doc.getRootElement();
boolean tag = attributeElementToMap(root.getChildren(),map);
if(!tag){
map.clear();
}
return map;
}
/**
* 把XML的内容节点取出,转换成 ParentName.SelfName = Value 的形式
*/
public boolean attributeElementToMap(List list , HashMap<String, String> map){
for (int i = 0; i < list.size(); i++) {
Element e = (Element) list.get(i);
List l_att = e.getAttributes();
for (int t = 0; t < l_att.size(); t++) {
Attribute attribute = (Attribute) l_att.get(t);
String name = attribute.getName();
String value = attribute.getValue();
map.put(name, value);// 属性
}
java.util.List listChildern = e.getChildren();
if (listChildern.size() > 0) {
attributeElementToMap(listChildern, map);
}
}
return true;
}
}
package bean;import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlStr = "<?xml version=\"1.0\" encoding=\"GB2312\" ?> "
+ "<returnInfo version=\"1.0\">" + "<items>"
+ "<item name=\"agentid\" value=\"1111\" /> "
+ "<item name=\"orderid\" value=\"23333\" /> "
+ "<item name=\"tranid\" value=\"444\" /> "
+ "<item name=\"resultno\" value=\"888\" />"
+ "<item name=\"chargeamt\" value=\"50\" />"
+ "<item name=\"\" value=\"备注|ERROR0001\" />"
+ "<item name=\"sing\" value=\"\" />" + "</items>"
+ "</returnInfo>";
Document document = null;
Element root = null;
List<Element> items = null;
Map<String,String> result = new HashMap<String,String>();
try {
//根据xml字符串生成document对象
document = DocumentHelper.parseText(xmlStr);
//获取根节点returnInfo
root = document.getRootElement();
//获取returnInfo->items下的子类列表
items = root.element("items").elements("item");
//遍历列表,并将节点对应的名称和值放入map中
for (Element item : items) {
result.put(item.attributeValue("name"),
item.attributeValue("value"));
}
//测试map中存入的值
for(Iterator<String> it=result.keySet().iterator();it.hasNext();){
String key=it.next();
System.out.println("key"+key+";value="+result.get(key));
}
} catch (Exception e) {
e.printStackTrace();
}
}}