博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xml处理工具类(Jdom)
阅读量:4966 次
发布时间:2019-06-12

本文共 5090 字,大约阅读时间需要 16 分钟。

注意:此工具类有局限性/** * 2017年10月25日下午2:29:07 */package com.jjmc.dcl.util;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.dom4j.DocumentHelper;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.JDOMException;import org.jdom2.Namespace;import org.jdom2.input.SAXBuilder;import org.xml.sax.InputSource;/** * * @author huangtao * 2017年10月25日下午2:29:07 * dclTask * @parameter * TODO * 使用jdom解析xml格式的string */public class XmlUtilJdom {//日志private static final StringDEBUG_PREFIX = "[XmlUtilJdom]";private static final StringINFO_PREFIX = "
";private static final StringERROR_PREFIX = "XmlUtilJdom->";private static Logger logger= Logger.getLogger(XmlUtilJdom.class);/*** * 用Jdom解析xml格式的字符串,返回List
>* * 2017年10月26日上午12:15:33* @param xmlDoc* @return* @throws Exception* @parameter* List
>**/    public static List
> xmlToList(String xmlDoc)  throws Exception{    logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToList begin");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToList begin");                    try {        List
> list = new ArrayList
>();    //创建一个新的字符串            StringReader read = new StringReader(xmlDoc);            //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入            InputSource source = new InputSource(read);            //创建一个新的SAXBuilder            SAXBuilder sb = new SAXBuilder();            //通过输入源构造一个Document            Document doc = sb.build(source);            //取的根元素            Element root = doc.getRootElement();//            System.out.println(root.getName());//输出根元素的名称(测试)            //得到根元素所有子元素的集合            List jiedian = root.getChildren();            //获得XML中的命名空间(XML中未定义可不写)            Namespace ns = root.getNamespace();            //获取根元素里的nextID//            String nextID = root.getAttributeValue("nextID");            Element et = null;            for(int i=0;i
map = new HashMap
();                    map.put("id", et.getChild("id",ns).getText());                map.put("mobile", et.getChild("mobile",ns).getText());                map.put("SrcNumber", et.getChild("SrcNumber",ns).getText());                map.put("TokenID", et.getChild("TokenID",ns).getText());                map.put("MessageID", et.getChild("MessageID",ns).getText());                map.put("DeliverState", et.getChild("DeliverState",ns).getText());                map.put("org_messageid", et.getChild("org_messageid",ns).getText());                map.put("insertTime", et.getChild("insertTime",ns).getText());                list.add(map);            }                logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToList end");    logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToList end");        return list;        } catch (JDOMException e1) {logger.error(ERROR_PREFIX+"execute xmlToList occur error,the exception is:"+e1);throw e1;        } catch (IOException e2) {logger.error(ERROR_PREFIX+"execute xmlToList occur error,the exception is:"+e2);throw e2;        }            }        /** * 只返回根节点中的数据 * 解析对象:类似这种格式的xml文件
OK[3946470]
 *  * 2017年10月23日下午10:00:07 * @param xml * @return * @parameter * String * */public static String xmlToString(String xml) throws Exception{ logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToString begin");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToString begin"); try {        List
> list = new ArrayList
>();    //创建一个新的字符串           StringReader read = new StringReader(xml);           //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入           InputSource source = new InputSource(read);           //创建一个新的SAXBuilder           SAXBuilder sb = new SAXBuilder();           //通过输入源构造一个Document           Document doc = sb.build(source);           //取的根元素           Element root = doc.getRootElement();//            System.out.println(root.getName());//输出根元素的名称(测试)           //得到根元素所有子元素的集合           List jiedian = root.getChildren();           //获得XML中的命名空间(XML中未定义可不写)           Namespace ns = root.getNamespace();           //获取根元素里的nextID           String nextID = root.getAttributeValue("nextID");               logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToString end");    logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+",xmlToString end");               return nextID;} catch (Exception e) {logger.error(ERROR_PREFIX+"execute xmlToString occur error,the exception is:"+e);throw e;}}        public static void main(String[] args){    XmlUtilJdom doc = new XmlUtilJdom();//        String xml = "
"+//        "
"+//           "
"+//            "
0
"+//              "
123456789
"+//              "
123456789
"+//              "
00000001
"+//              "
1
"+//              "
2017-04-01 12:23:13 0
"+//           "
"+//           "
"+//           "
1
"+//           "
123456789
"+//           "
123456789
"+//           "
00000002
"+//           "
1
"+//           "
2017-07-01 12:23:13 0
"+//           "
"+//        "
";String xml = "
2117752
1234567890
123456789
1234567890
000001
1
000001
2017-10-19 16:40:23 0
";            List
> list;try {list = doc.xmlToList(xml);       for(Map
l:list){        System.out.println("====================");        for(String key:l.keySet()){        System.out.println("key="+key+",value="+l.get(key));        }        System.out.println("====================");       }} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    }}

转载于:https://www.cnblogs.com/huangtao1927/p/7751146.html

你可能感兴趣的文章
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
js 基础拓展
查看>>
C#生成随机数
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>