DOM4J 解析XML

Java XML解析到JSON与List

import java.io.File;
import java.util.ArrayList;
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.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class AnaliysisXml {
	/**
	 *获取指定节点的String格式内容
	 * @param eleName  节点
	 * @param XML  XML文件
	 * @return
	 * @throws DocumentException
	 */
	public String getElementText(String eleName,File XML){
		SAXReader reader=new SAXReader();
		Document document = null;
		try {
			document = reader.read(XML);
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Element element=root.element(eleName);
		return element.getText();
	}
	/**
	 * 获取指定节点的String格式内容
	 * @param eleName  指定的节点
	 * @param XML  XML字符串
	 * @return
	 */
	public String getElementText(String eleName,String XML){
		Document document = null;
		try {
			document = DocumentHelper.parseText(XML);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Element element=root.element(eleName);
		return element.getText();
	}
        /**
        *检测是否还有子节点,若有则将节点数据转成JSON
        */
	public String checkChildEle(Element element) {
		String json="";
		List<Element> list = new ArrayList<Element>();
			 list=element.elements();
		if (list.size()>0) {
			for (Element ele : list) {
				json+=ele.getName()+":"+ele.getText()+","+"\r\n"+checkChildEle(ele);
			}
		}
		return json;
	}
	/**
	 * 获取所有节点
	 * @param XML  xml字符串
	 * @return  json格式
	 */
	public String getAllElementAndtext(String XML) {
		Document document = null;
		try {
			document = DocumentHelper.parseText(XML);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Iterator it=root.elementIterator();
		String json="{";
		while (it.hasNext()) {
			Element element =(Element)it.next();
			String j=checkChildEle(element);
			if (j=="") {
				json+=element.getName()+":"+element.getText()+","+"\r\n";
			}else {
				json+=j;
			}
			
		}
		json+="}";
		return json;
	}
	/**
	 * 获取所有节点的内容
	 * @param XML  xml文件
	 * @return
	 */
	public String getAllElementAndtext(File XML) {
		SAXReader saxReader=new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(XML);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Iterator it=root.elementIterator();
		String json="{";
		while (it.hasNext()) {
			Element element =(Element)it.next();
			String j=checkChildEle(element);
			if (j=="") {
				json+=element.getName()+":"+element.getText()+","+"\r\n";
			}else {
				json+=j;
			}
			
		}
		json+="}";
		return json;
	}
	/**
	 * 检测指定节点下是否还有子节点,若有子节点则将子节点数据转成List<Map<String, String>>
	 * @param element
	 * @return
	 */
	public List<Map<String, String>> checkChildEleChangeList(Element element) {
		List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
		String json="";
		List<Element> list = new ArrayList<Element>();
			 list=element.elements();
		if (list.size()>0) {
			for (Element ele : list) {
				Map<String, String> map=new HashMap<String, String>();
				map.put(ele.getName(), ele.getText());
				list1.add(map);
				list1.addAll(checkChildEleChangeList(ele));
			}
		}
		return list1;
	}
	/**
	 * 将XML转成 List<Map<String, String>>
	 * @param XML
	 * @return
	 */
	public List<Map<String, String>> changeXmlToList(File XML) {
		List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
		SAXReader saxReader=new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(XML);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Iterator it=root.elementIterator();
		while (it.hasNext()) {
			Element element =(Element)it.next();
			List<Map<String, String>> j=checkChildEleChangeList(element);
			if (j.size()==0) {
				Map<String, String> map=new HashMap<String, String>();
				map.put(element.getName(), element.getText());
				list1.add(map);
			}else {
				list1.addAll(j);
			}
			
		}
		return list1;
	}
	/**
	 * 将XML转成 List<Map<String, String>>
	 * @param XML
	 * @return
	 */
	public List<Map<String, String>> changeXmlToList(String XML) {
		List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
		Document document = null;
		try {
			document = DocumentHelper.parseText(XML);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root=document.getRootElement();
		Iterator it=root.elementIterator();
		while (it.hasNext()) {
			Element element =(Element)it.next();
			List<Map<String, String>> j=checkChildEleChangeList(element);
			if (j.size()==0) {
				Map<String, String> map=new HashMap<String, String>();
				map.put(element.getName(), element.getText());
				list1.add(map);
			}else {
				list1.addAll(j);
			}
			
		}
		return list1;
	}
}

 

转载于:https://my.oschina.net/2892328252/blog/719366

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值