Dom4j解析字符串xml格式

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件。

Maven在线地址:https://mvnrepository.com/artifact/dom4j/dom4j

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class DomDemo {
	public static void main(String[] args) throws DocumentException {
		String data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
		data += "<UTILITY_PAYMENT><DATA_AREA><TRAN_CODE>";
		data += "333";
		data += "</TRAN_CODE><BANK_CODE>";
		data += "03";
		data += "</BANK_CODE><SEARCH_CODE>";
		data += "123456789";
		data += "</SEARCH_CODE></DATA_AREA></UTILITY_PAYMENT>";
		readToMap(data);
	}

	public static void readXml(String xml) throws DocumentException {
		Document doc = null;
		// 下面的是通过解析xml字符串的
		doc = DocumentHelper.parseText(xml); // 将字符串转为XML

		Element rootElt = doc.getRootElement(); // 获取根节点
		System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
		Iterator iter = rootElt.elementIterator("DATA_AREA"); // 获取根节点下的子节点
		// 遍历head节点
		while (iter.hasNext()) {
			Element recordEle = (Element) iter.next();
			String title = recordEle.elementTextTrim("TRAN_CODE"); // 拿到节点下的子节点值
			System.out.println("TRAN_CODE:" + title);
		}

		
	}

	/**
	 * @description 将xml字符串转换成map
	 * @param xml
	 * @return Map
	 */
	public static Map readToMap(String xml) {
		Map map = new HashMap();
		Document doc = null;
		try {
			// 将字符串转为XML
			doc = DocumentHelper.parseText(xml);
			// 获取根节点
			Element rootElt = doc.getRootElement();
			// 拿到根节点的名称
			System.out.println("根节点:" + rootElt.getName());

			// 获取根节点下的子节点
			Iterator iter = rootElt.elementIterator("DATA_AREA");
			// 遍历head节点
			while (iter.hasNext()) {
				Element recordEle = (Element) iter.next();
				// 拿到节点下的子节点值
				String tranCode = recordEle.elementTextTrim("TRAN_CODE");
				System.out.println("tranCode:" + tranCode);
				map.put("tranCode", tranCode);
				
				String bankCode = recordEle.elementTextTrim("BANK_CODE");
				System.out.println("bankCode:" + bankCode);
				map.put("bankCode", bankCode);
				
				String searchCode = recordEle.elementTextTrim("SEARCH_CODE");
				System.out.println("searchCode:" + searchCode);
				map.put("searchCode", searchCode);
				
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}

}
根节点:UTILITY_PAYMENT
tranCode:333
bankCode:03
searchCode:123456789
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值