xml转Map(递归调用读取XML全部节点内容) readXml 读取xml

xml转Map(递归调用读取XML全部节点内容) 

/**
 * like12 add,20220601,递归调用读取XML全部节点内容
 * xml转Map
 * @param xmlStr
 * @return
 * @throws Exception
 */
public static Map<String, Object> xmlToMap(String xmlStr) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    //将xml格式的字符串转换成Document对象
    Document doc = DocumentHelper.parseText(xmlStr);
    //获取根节点
    Element root = doc.getRootElement();
    //递归调用
    map = iteratorFunc(root, map);
    return map;
}
/**
 * 递归调用
 * @param root
 * @param map
 * @return
 */
public static Map<String, Object> iteratorFunc(Element root, Map<String, Object> map) {
    // 通过element对象的elementIterator方法获取迭代器
    Iterator it = root.elementIterator();
    // 遍历迭代器,获取根节点中的信息
    while (it.hasNext()) {
        Element book = (Element) it.next();
        map.put(book.getName(), book.getTextTrim());
        System.out.println(book.getName() + " " + book.getTextTrim());
        //递归
        map = iteratorFunc(book, map);
    }
    return map;
}

读取XML readXml

// 读取XML
@SuppressWarnings({ "rawtypes" })
public Map<String, Object> readXml(String strIn) {
	String retCode = null;
	String retDesc = null;
	String retValue = null;

	// 创建SAXReader的对象reader
	SAXReader reader = new SAXReader();
	try {
		//String转InputStream
		ByteArrayInputStream byteArrayInputStream = null;
		try {
			byteArrayInputStream = new ByteArrayInputStream(
					strIn.getBytes("GBK"));
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		InputStream in = (InputStream)byteArrayInputStream;
		
		// 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
		org.dom4j.Document document = reader.read(in);
		//Document document = reader.read(new File("D://test.xml"));
		// 通过document对象获取根节点bookstore
		Element bookStore = document.getRootElement();
		// 通过element对象的elementIterator方法获取迭代器
		Iterator it = bookStore.elementIterator();
		// 遍历迭代器,获取根节点中的信息(书籍)
		while (it.hasNext()) {
			//System.out.println("=====开始遍历某一本书=====");
			Element book = (Element) it.next();
			/*// 获取book的属性名以及 属性值
			List<Attribute> bookAttrs = book.attributes();
			for (Attribute attr : bookAttrs) {
				System.out.println("属性名:" + attr.getName() + "--属性值:"
						+ attr.getValue());
			}*/
			Iterator it2 = book.elementIterator();
			while (it2.hasNext()) {
				Element book2 = (Element) it2.next();
				//System.out.println("节点名:" + book2.getName() + "--节点值:"
						//+ book2.getStringValue());
				
				if ("retCode".equals(book2.getName())) {
					retCode = book2.getStringValue();
				} else if ("retDesc".equals(book2.getName())) {
					retDesc = book2.getStringValue();
				} else if ("retValue".equals(book2.getName())) {
					retValue = book2.getStringValue();
				}
			}
			//System.out.println("=====结束遍历某一本书=====");
		}
	} catch (DocumentException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	Map<String, Object> params = new HashMap<String, Object>();
	params.put("retCode", retCode);
	params.put("retDesc", retDesc);
	params.put("retValue", retValue);
	return params;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值