如下面的xml
<kvs>
<kv>
<key>f1</key>
<value>100</value>
</kv>
<kv>
<key>f2</key>
<value>200</value>
</kv>
</kvs>
转成HashMap
存储键值对
f1, 100
f2, 200
<kvs>
<kv>
<key>f1</key>
<value>100</value>
</kv>
<kv>
<key>f2</key>
<value>200</value>
</kv>
</kvs>
转成HashMap
存储键值对
f1, 100
f2, 200
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class XMLOper {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
SAXReader reader = new SAXReader();
File file = new File("d:\\test.xml");
Map map = new HashMap();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
List<Element> elements = root.elements("kv");
for(Iterator it = elements.iterator();it.hasNext();){
Element kv = (Element)it.next();
Element key = kv.element("key");
Element value = kv.element("value");
map.put(key.getText(), value.getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
System.out.println(map);
}
}
public static Map toMap(String xml) {
ByteArrayInputStream sin = new ByteArrayInputStream(xml.getBytes());
return toMap(sin);
}
/**
* 将xml输入流转成map对象
* @param in -- xml输入流
* @return -- map对象
*/
public static Map toMap(InputStream in) { try {
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
return toMap(doc.getRootElement());
} catch (Exception ex) {
throw new RuntimeException("解析xml成map对象异常", ex);
}
}