zoukankan      html  css  js  c++  java
  • dom4j解析xml

    待解析的xml文如下:

    View Code
    <root>
    <requestContent>
        <requestFrom></requestFrom>
            <logNeId></logNeId>
            <areaCode></areaCode>
            <servCode></servCode>
            <operateId></operateId>
            <synTimeOut></synTimeOut>
            <cmdpParas>
                <cmdPara>
                    <fromParaCode></fromParaCode>
                    <paraValue></paraValue>
                </cmdPara>
                <cmdPara>
                    <fromParaCode></fromParaCode>
                    <paraValue></paraValue>
                </cmdPara>
            </cmdParas>
        </requestContent>
    </root>

    解析如下:

    /**
         * 解析请求xml<br>
         * @param xml 请求的xml
        * @return String由错误编码和错误描述拼接而成
         */
          public  String readStringXml(String xml){
              NeopRequest neopRequest =new NeopRequest();
              String synTimeOut=null;//超时时间
              Document doc = null;
              try {
                doc = DocumentHelper.parseText(xml);// 将字符串转为XML
                Element rootElt = doc.getRootElement(); // 获取根节点
                System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
                Iterator iter = rootElt.elementIterator("requestContent"); // 获取根节点下的子节点requestContent
                while(iter.hasNext()){
                    Element recordEle = (Element) iter.next();
                    String requestFrom = recordEle.elementTextTrim("requestFrom"); // 拿到requestContent节点下的子节点requestFrom值
                    neopRequest.setRequestFrom(requestFrom);//请求来源标识
                    logger.info("requestFrom:" + requestFrom);
                    String logNeId = recordEle.elementTextTrim("logNeId"); // 拿到requestContent节点下的子节点logNeId值
                    logger.info("logNeId:" + logNeId);
                    neopRequest.setLogicNeId(Long.parseLong(logNeId));//逻辑网元id
                    
                    String areaCode = recordEle.elementTextTrim("areaCode"); // 拿到requestContent节点下的子节点areaCode值
                    logger.info("areaCode:" + areaCode);
                    neopRequest.setLocalAreaCode(areaCode); //本地网编码
                    
                    String servCode = recordEle.elementTextTrim("servCode"); // 拿到requestContent节点下的子节点servCode值
                    logger.info("servCode:" + servCode);
                    
                    neopRequest.setListCmdTemplateId(SouthInvokService.getCmdTemplateIds(Long.parseLong(logNeId), servCode)); //命令模版ID,用来匹配指令模版
                    
                    
                    String operateId = recordEle.elementTextTrim("operateId"); // 拿到requestContent节点下的子节点operateId值
                    logger.info("operateId:" + operateId);
                    neopRequest.setRequestId(operateId);//操作id, 对应每次请求的序列号
                    
    
                    synTimeOut = recordEle.elementTextTrim("synTimeOut"); // 拿到requestContent节点下的子节点synTimeOut值,超时时间
                    logger.info("synTimeOut:" + synTimeOut);
                    
                    Element cmdParas = recordEle.element("cmdParas"); //cmdParas节点
                    Iterator it = cmdParas.elementIterator("cmdPara");
                     while(it.hasNext()){
                        Element e = (Element) it.next();
                        Map<String, String> mapCmdPara = new HashMap<String, String>();
                        String fromParaCode=e.elementTextTrim("fromParaCode");
                        String paraValue=e.elementTextTrim("paraValue");
                        logger.info("上游系统编码"+fromParaCode+"对应的参数值是:"+paraValue);
                        neopRequest.setCmdPara(mapCmdPara);//命令参数
                     }
                }
            } catch (DocumentException e) {
                logger.error("xml解析异常!", e);
              }
            long t1 = System.currentTimeMillis();
            NeopResponse neopResponse=submitRequest(neopRequest,synTimeOut);
            long t2 = System.currentTimeMillis();
            long realSpendTime = t2 - t1;
            logger.info("【耗时】: " + realSpendTime + " 毫秒");
            //返回响应的xml
            return createXml(neopResponse);
          }
  • 相关阅读:
    react模拟后端接口及提交方式 json-server
    CSS基础知识(概念、块级元素、行内元素、选择器)
    HTML基础知识(表格、表单)
    HTML基础知识(常见元素、列表、链接元素、图片元素)
    【Ionic】---AngularJS扩展基本布局
    多行文本溢出显示省略号…
    【AngularJs】---"Error: [ng:areq] Argument 'fn' is not a function, got undefined"
    【AngularJs】---$sce 输出Html
    【AngularJs】---实现select的ng-options
    浅谈WLAN干扰与抗干扰技术
  • 原文地址:https://www.cnblogs.com/kunpengit/p/2872685.html
Copyright © 2011-2022 走看看