111,092
社区成员




<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getMaterialListResponse xmlns:ns2="http://erp.service.abc.com/">
<materialList>
<code>1AI6NF4H120A11303</code>
<length>10.0</length>
</materialList>
<materialList>
<code>1AI6NF4H120B11303</code>
<length>20.0</length>
</materialList>
<materialList>
<code>1AI4NF4H020BHH803</code>
<length>0.0</length>
</materialList>
</ns2:getMaterialListResponse>
</soap:Body>
</soap:Envelope>
public Map<String,Object>map = new ConcurrentHashMap<String,Object>();
public Map parse(String soap) throws DocumentException{
Document doc = DocumentHelper.parseText(soap);//报文转成doc对象
Element root = doc.getRootElement();//获取根元素,准备递归解析这个XML树
getCode(root);
return map;
}
public void getCode(Element root){
if(root.elements()!=null){
List<Element>list = root.elements();//如果当前跟节点有子节点,找到子节点
for(Element e:list){//遍历每个节点
if(e.elements().size()>0){
getCode(e);//当前节点不为空的话,递归遍历子节点;
}
if(e.elements().size()==0){
map.put(e.getName(), e.getTextTrim());
}//如果为叶子节点,那么直接把名字和值放入map
}
}
}
public static void main(String[] args) {
String soap = "StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ "<soap:Body> <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
+ "<theCityName>" + city
+ "</theCityName> </getWeatherbyCityName>"
+ "</soap:Body></soap:Envelope>");
//初始化报文,调用parse方法,获得结果map,然后按照需求取得字段,或者转化为其他格式
Map map = parse(soap.toString());
//获得字段s:SourceSysId的值;
String theCityName = map.get("theCityName").toString();
System.out.println("theCityName"+theCityName);
}