惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Register - Security
The Register - Security
IT之家
IT之家
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
博客园 - Franky
C
Check Point Blog
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
美团技术团队
The Cloudflare Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
V
V2EX
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
G
Google Developers Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
罗磊的独立博客
量子位
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
D
Docker
人人都是产品经理
人人都是产品经理

博客园 - blueKnight

Java根据WSDL生成request的SOAP报文模板 【转】HttpClient使用Post和Get提交参数 HttpClient示例 【转】C++标准库和标准模板库 dotNetFrameWork 3.5SP1离线安装 笔记本电脑win7创建WIFI热点 【转】Oracle免客户端For .Net(增加分析Devart和DataDirect) 【转】ORA-00257 archiver error. 错误的处理方法 数学表达式与二叉树 FIREFOX不支持font-family: webdings;怎么办? "5","6"排序上下箭头问题 【转】Eclipse插件开发之基础篇(1) 插件开发的基础知识 http MIME大全 在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码) FreeMarker示例 转:用XML编写EXCEL文件 【网摘】BI系统(Business Intelligence) js获取周.html 关于j2ee工程发布到was上后,部分更新,例修改web.xml配置文件不起作用的原因解析 SSI(Struts2+Spring2+IBatis)代码生成器(纯Java版)
Java解析Soap XML
blueKnight · 2014-02-13 · via 博客园 - blueKnight
  1 package com.jstrd.tipstock.webservice.jt.base;
  2 
  3 import java.io.ByteArrayInputStream;
  4 import java.util.Iterator;
  5 
  6 import javax.xml.soap.MessageFactory;
  7 import javax.xml.soap.MimeHeaders;
  8 import javax.xml.soap.SOAPBody;
  9 import javax.xml.soap.SOAPElement;
 10 import javax.xml.soap.SOAPMessage;
 11 
 12 public class SoapUtil {
 13     
 14     /**
 15      * 解析soapXML
 16      * @param soapXML
 17      * @return
 18      */
 19     public static WebserviceResultBean parseSoapMessage(String soapXML) {
 20         WebserviceResultBean resultBean = new WebserviceResultBean();
 21         try {
 22             SOAPMessage msg = formatSoapString(soapXML);
 23             SOAPBody body = msg.getSOAPBody();
 24             Iterator<SOAPElement> iterator = body.getChildElements();
 25             parse(iterator, resultBean);
 26         } catch (Exception e) {
 27             e.printStackTrace();
 28         }
 29         return resultBean;
 30     }
 31 
 32     public static void main(String[] args) {
 33         System.out.println("开始解析soap...");
 34 
 35         String deptXML = "<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP:Header/><SOAP:Body><ns:OP_SDMS_Consume_Material_SynResponse xmlns:ns=\"http://toSDMS.material.service.ffcs.com\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><ns:return><ns:BASEINFO><MSGID>?</MSGID><PMSGID>?</PMSGID><SENDTIME>20140212094609</SENDTIME><S_PROVINCE>?</S_PROVINCE><S_SYSTEM>?</S_SYSTEM><SERVICENAME>?</SERVICENAME><T_PROVINCE>?</T_PROVINCE><T_SYSTEM>?</T_SYSTEM><RETRY>?</RETRY></ns:BASEINFO><ns:MESSAGE><RESULT>E</RESULT><REMARK/><XMLDATA><![CDATA[<response><RESULT>E</RESULT><MESSAGE>平台系统处理时发生异常!保存接口接收数据出错!</MESSAGE></response>]]></XMLDATA></ns:MESSAGE></ns:return></ns:OP_SDMS_Consume_Material_SynResponse></SOAP:Body></SOAP:Envelope>";
 36         WebserviceResultBean ret = parseSoapMessage(deptXML);
 37         try {
 38             SOAPMessage msg = formatSoapString(deptXML);
 39             SOAPBody body = msg.getSOAPBody();
 40             Iterator<SOAPElement> iterator = body.getChildElements();
 41             PrintBody(iterator, null);
 42         } catch (Exception e) {
 43             e.printStackTrace();
 44         }
 45 
 46         System.out.println("解析soap结束...");
 47     }
 48 
 49     /**
 50      * 把soap字符串格式化为SOAPMessage
 51      * 
 52      * @param soapString
 53      * @return
 54      * @see [类、类#方法、类#成员]
 55      */
 56     private static SOAPMessage formatSoapString(String soapString) {
 57         MessageFactory msgFactory;
 58         try {
 59             msgFactory = MessageFactory.newInstance();
 60             SOAPMessage reqMsg = msgFactory.createMessage(new MimeHeaders(),
 61                     new ByteArrayInputStream(soapString.getBytes("UTF-8")));
 62             reqMsg.saveChanges();
 63             return reqMsg;
 64         } catch (Exception e) {
 65             e.printStackTrace();
 66             return null;
 67         }
 68     }
 69 
 70     /**
 71      * 解析soap xml
 72      * @param iterator
 73      * @param resultBean
 74      */
 75     private static void parse(Iterator<SOAPElement> iterator, WebserviceResultBean resultBean) {
 76         while (iterator.hasNext()) {
 77             SOAPElement element = iterator.next();
 78 //            System.out.println("Local Name:" + element.getLocalName());
 79 //            System.out.println("Node Name:" + element.getNodeName());
 80 //            System.out.println("Tag Name:" + element.getTagName());
 81 //            System.out.println("Value:" + element.getValue());
 82             if ("ns:BASEINFO".equals(element.getNodeName())) {
 83                 continue;
 84             } else if ("ns:MESSAGE".equals(element.getNodeName())) {
 85                 Iterator<SOAPElement> it = element.getChildElements();
 86                 SOAPElement el = null;
 87                 while (it.hasNext()) {
 88                     el = it.next();
 89                     if ("RESULT".equals(el.getLocalName())) {
 90                         resultBean.setResult(el.getValue());
 91                         System.out.println("#### " + el.getLocalName() + "  ====  " + el.getValue());
 92                     } else if ("REMARK".equals(el.getLocalName())) {
 93                         resultBean.setRemark(null != el.getValue() ? el.getValue() : "");
 94                         System.out.println("#### " + el.getLocalName() + "  ====  " + el.getValue());
 95                     } else if ("XMLDATA".equals(el.getLocalName())) {
 96                         resultBean.setXmlData(el.getValue());
 97                         System.out.println("#### " + el.getLocalName() + "  ====  " + el.getValue());
 98                     }
 99                 }
100             } else if (null == element.getValue()
101                     && element.getChildElements().hasNext()) {
102                 parse(element.getChildElements(), resultBean);
103             }
104         }
105     }
106     
107     private static void PrintBody(Iterator<SOAPElement> iterator, String side) {
108         while (iterator.hasNext()) {
109             SOAPElement element = (SOAPElement) iterator.next();
110             System.out.println("Local Name:" + element.getLocalName());
111             System.out.println("Node Name:" + element.getNodeName());
112             System.out.println("Tag Name:" + element.getTagName());
113             System.out.println("Value:" + element.getValue());
114             if (null == element.getValue()
115                     && element.getChildElements().hasNext()) {
116                 PrintBody(element.getChildElements(), side + "-----");
117             }
118         }
119     }
120 }

posted @ 2014-02-13 13:02  blueKnight  Views(49002)  Comments()    收藏  举报