如下面的xml
<kvs>
<kv>
<key>f1</key>
<value>100</value>
</kv>
<kv>
<key>f2</key>
<value>200</value>
</kv>
</kvs>
转成HashMap
存储键值对
f1, 100
f2, 200

解决方案 »

  1.   

    import java.io.File;
    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);
    }
    }
      

  2.   


    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);

    }