解析调用接口内容和构建接口请求xml

来源:互联网 发布:mac做java开发工具 编辑:程序博客网 时间:2024/05/19 13:24

如果接口返回值为java.io.InputStream类型

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public HotelListResult parseResult(InputStream input) {
        HotelListResult hotelResult = new HotelListResult();
        SAXReader saxReader = new SAXReader();
        try {
            Document doc = saxReader.read(input);

           Node countNode= doc.selectSingleNode("/TransmitData/hotelList/hotel-response/count");

           if (countNode != null ){

                 int count = NumberUtils.toInt(countNode.getText());

            }

           其他基本类型内容都可以使用这种方法解析,如果解析的为集合,并且每个值都为对象,则可以使用下边方法解析

            List<?> hotelBaseListNode = doc.selectNodes("/TransmitData/hotelList/hotel-response/hotelbase");

            if (hotelBaseListNode != null && hotelBaseListNode.size() > 0){

                 for (Iterator it = hotelBaseListNode.iterator(); it.hasNext();) {      
                           Element hotelBaseNode = (Element) it.next();
                           String hotelid = HotelApiUtil.getNodeText(hotelBaseNode.selectSingleNode("hotelid"));
                           String hotelName = HotelApiUtil.getNodeText(hotelBaseNode.selectSingleNode("hotelName"));

                   }

            }

              .......

如果接口返回值为String类型

import org.dom4j.DocumentHelper;

       public static  HotelListResult parseResult(String xml) {

                try {
            Document doc = DocumentHelper.parseText(xml);

           Node countNode= doc.selectSingleNode("/TransmitData/hotelList/hotel-response/count");

           if(countNode!=null ){

               int count = NumberUtils.toInt(countNode.getText());

           }

          如果解析的为集合

          List<?> hotelBaseListNode = doc.selectNodes("/TransmitData/hotelList/hotel-response/hotelbase");

           if (hotelBaseListNode != null && hotelBaseListNode.size() > 0){

                     for (Iterator it = hotelBaseListNode.iterator(); it.hasNext();) {      
                           Element hotelBaseNode = (Element) it.next();
                           String hotelid = HotelApiUtil.getNodeText(hotelBaseNode.selectSingleNode("hotelid"));
                           String hotelName = HotelApiUtil.getNodeText(hotelBaseNode.selectSingleNode("hotelName"));

                        }

           }

      }

   ...........


构建接口请求xml


public static String buildRequest(HotelListRequest hotelRequest) {

         String strXml = "";
        try {
            Document xmldoc = DocumentHelper.createDocument();
            // 创建根节点
            Element hotelRoot = xmldoc.addElement("TransmitData");
            hotelRoot.addAttribute("version", "V.01");
            Element hotelListElement = hotelRoot.addElement("hotelList");
            Element hotelRequestElement = hotelListElement.addElement("hotel-request");
            
            hotelRequestElement.addElement("cityName").setText(hotelRequest.getCityId());

.............

         strXml = xmldoc.asXML();       
         return strXml;

}



        

原创粉丝点击