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);
          }
  • 相关阅读:
    SharePoint on Windows Server 2008 R2 "客户端不支持使用windows资源管理器打开此列表”
    Exception:Collection was modified; enumeration operation may not execute.
    windows 2008 iisapp
    VMware Workstation OEM (MultiBrand) Bios Installer
    Cajviewer 7.0.2 Windows 7下使用方法:
    Delphi与Windows 7下的用户账户控制(UAC)机制
    VS2008 在WINDOWS 7的UAC开启的情况下如何写注册表HKLM(HKEY_LOCAL_MACHIN)下的值
    windows SDK安装出现没有权限的一个解决办法
    Thinkpad Marker SLIC 2.1 激活Windows 7的详细教程
    点击网页中PDF链接时,打开PDF文档不再是直接IE查看,而是提示下载保存
  • 原文地址:https://www.cnblogs.com/kunpengit/p/2872685.html
Copyright © 2011-2022 走看看