【问题标题】:Marshall of HashMap, Arraylist, and list with title into OMElement as response in webservice wsdl?HashMap、Arraylist 和带有标题的列表的马歇尔到 OMElement 作为 webservice wsdl 中的响应?
【发布时间】:2014-02-26 04:38:13
【问题描述】:

为 WSDL 响应设置响应。 响应由列表内的列表组成 地图或列表中的地图 列表或地图可以包含内部地图。

【问题讨论】:

    标签: java wsdl hashmap axis


    【解决方案1】:
    private OMElement marshallMapIntoElements(String responseName, LinkedHashMap responseMap)
      {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNS = fac.createOMNamespace("http://something.com/w-ww", "w-w-w");
        OMElement responseElement = fac.createOMElement(responseName, omNS);
        Iterator responseIterator = responseMap.keySet().iterator();
        responseElement.addChild(recursiveMapRetrive(responseMap,responseElement));
        return responseElement;
      }
    
      public OMElement recursiveMapRetrive(LinkedHashMap<String, Object> response, OMElement responseElement) {
    
            for (Map.Entry<String, Object> entry : response.entrySet()) {
                OMFactory fac = OMAbstractFactory.getOMFactory();
                OMNamespace omNS = fac.createOMNamespace("http://services.xm.org/xsd", "tns");
                OMElement fieldElement1 = responseElement;
                LinkedHashMap responseMap = new LinkedHashMap();
                ArrayList arrayList = new ArrayList();
                String field = entry.getKey();
                Object value = entry.getValue();
                if (value instanceof LinkedHashMap) {
                    fieldElement1 = fac.createOMElement(field, omNS);
                    fieldElement1.addChild(recursiveMapRetrive((LinkedHashMap) value, fieldElement1));
    
                } else if (value instanceof ArrayList) {
                    OMElement fieldElement = null;
                    for (Object object : (ArrayList) value) {
                        if (object instanceof LinkedHashMap) {
                            fieldElement = fac.createOMElement(field, omNS);
                            fieldElement1.addChild(recursiveMapRetrive((LinkedHashMap) object,fieldElement));
                        } else {
                            fieldElement = fac.createOMElement(field, omNS);
                            fieldElement.addChild(fac.createOMText(fieldElement1,object.toString()));
                            fieldElement1.addChild(fieldElement);
                        }
                    }
                    return fieldElement1;
                } else {
                    fieldElement1 = fac.createOMElement(field, omNS);
                    fieldElement1.addChild(fac.createOMText(fieldElement1,value.toString()));
                }
                responseElement.addChild(fieldElement1);
            }
            return responseElement;
        }
    

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2014-08-04
      • 1970-01-01
      • 2023-03-20
      • 2014-09-21
      • 2012-04-15
      相关资源
      最近更新 更多