xml转map

第一次写博客,不知道该怎么写,只有想到怎么写就怎么写了
java中如何把xml文件转换为map文件。本文章主要是针对不带属性的转化,并且必须要有根元素,不然会报错。

需要额外导入的jar包:jdom.jar


package com.jsptest;


import java.io.File;

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class XmlToMap {
    public static void main(String[] args) throws JDOMException, IOException {
        //文件的读取
        File file = new File("C:"
                    +File.separator+"Users"
                    +File.separator+"Administrator.USER-20170729ZL"
                    +File.separator +"Desktop"
                    +File.separator+"file.xml");
        //File file2 = new File("C:\\Users\\Administrator.USER-20170729ZL\\Desktop\\file.xml");
        //创建解析器对象
        SAXBuilder builder = new SAXBuilder();
        
        /*
         * 如果是字符串对象,就用StringReader读取
         * Reader reader = new StringReader(sb.toString());
         */
        // FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。
        Reader reader = new FileReader(file);
        //创建Document对象
        Document doc = builder.build(reader);
        //创建map对象,用于接收xml文件的内容
        Map<String,Object> map = new HashMap<String,Object>();
        //创建element对象,读取根节点
        Element root = doc.getRootElement();
        //读取子节点
        List booklist = root.getChildren();
        //把读取到的内容添加到map中去
        map.put(root.getName(), XmlToMap.getChildrenText(booklist));
        //输出map
        System.out.println(map);
    }
    
    //操作子节点
    public static Map<String,Object> getChildrenText(List children) {
         Map<String,Object> map = new HashMap<String,Object>();
         if(!children.isEmpty()) {
             Iterator it = children.iterator();
             while(it.hasNext()) {
                 Element e = (Element) it.next();
                 String name = e.getName();
                 Object value = "";
                 List list = e.getChildren();
                 if(!list.isEmpty()) {
                     //如果还有子节点,递归
                     value = xmlToMap.getChildrenText(list);
                 }else {
                     value = e.getValue();
                 }
                 map.put(name, value);
             }
         }
         return map;
     }
}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值