eclipse解析wsdl文件 怎么获取wsdl信息

eclipse解析wsdl文件 怎么获取wsdl信息,第1张

一个WSDL文档通常包含7个重要的元素,即types、import、message、portType、operation、binding、 service元素。

这些元素嵌套在definitions元素中,

(1) Definitions是WSDL文档的根元素。对应于这个类: org.eclipse.wst.wsdl.Definition 其他的对芹返象都可以通过这个对象获得

(2) Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。

(3) Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。

(4) PortType - 对于某个访问入口点类型所支持的 *** 作的抽象集合,这些 *** 作可以由一个或多个服务访问点来支持。

(子节点) Operation - 对服务中所支持的 *** 作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。

(5) Binding - 特定端口类型的具体协议和数据孙首禅格式规范的绑定。

(6) Service- 相关服务访问点的集合。

(子节点) Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单则尘个服务访问点。

下面是代码实例:

import java.io.Fileimport java.io.IOExceptionimport java.util.Iteratorimport java.util.Listimport java.util.Mapimport java.util.Set import javax.wsdl.Messageimport javax.wsdl.Partimport javax.wsdl.PortTypeimport javax.xml.namespace.QName import org.eclipse.emf.common.util.URIimport org.eclipse.emf.ecore.resource.Resourceimport org.eclipse.emf.ecore.resource.ResourceSetimport org.eclipse.emf.ecore.resource.impl.ResourceSetImplimport org.eclipse.wst.wsdl.Definitionimport org.eclipse.wst.wsdl.Typesimport org.eclipse.wst.wsdl.internal.impl.PartImplimport org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImplimport org.eclipse.wst.wsdl.util.WSDLResourceImplimport org.eclipse.xsd.XSDElementDeclarationimport org.eclipse.xsd.XSDSchemaimport org.eclipse.xsd.util.XSDResourceImplimport org.junit.Testimport org.junit.Before public class WSDLParserWithEclipse { Definition definition=null String wsdlPathString="E:/HelloEclipse-EMF-WSDL-XSD/test.wsdl" @Before public void setup(){ ResourceSet resourceSet = new ResourceSetImpl() Resource.Factory.Registry registry = resourceSet.getResourceFactoryRegistry() Map extensionToFactoryMap = registry.getExtensionToFactoryMap() extensionToFactoryMap.put("wsdl", new WSDLResourceFactoryImpl()) File wsdlFile =new File(wsdlPathString) URI uri = URI.createFileURI(wsdlFile.getAbsolutePath()) // You can avoid this cast, but will have to cast anyway later to get the Definition out the resource contents WSDLResourceImpl wsdlResource = (WSDLResourceImpl) resourceSet.createResource(uri) try { wsdlResource.load(null) definition = wsdlResource.getDefinition() }catch(Exception e){ e.printStackTrace() } } @Test public void testTypes(){ Types types = definition.getETypes() List schemas = types.getSchemas("http://www.xxxxx.com/problem") XSDSchema schema = (XSDSchema) schemas.get(0) org.eclipse.xsd.util.XSDResourceImpl.serialize(System.out, schema.getElement())} @Test public void testMessage(){ Map messages=definition.getMessages() System.out.println("The message size is:"+messages.size()) Set setMessages=messages.keySet() Iterator iteratorMessages=setMessages.iterator() while(iteratorMessages.hasNext()){ QName key=(QName)iteratorMessages.next() Message message=(Message)messages.get(key) //{http://www.xxxxx.com/problem}getKeysSoapIn //System.out.println("Message Name:"+message.getQName()) if(message.getQName().toString().indexOf("getKeysSoapIn")>0){ System.out.println("Message Name:"+message.getQName()) Map partsMap=message.getParts() //org.eclipse.xsd.impl.XSDElementDeclarationImpl System.out.println("Message Part size for getKeysSoapIn message is:"+partsMap.size()) PartImpl part= (PartImpl)partsMap.get("problem") XSDElementDeclaration xsdElementDeclaration=part.getElementDeclaration() XSDResourceImpl.serialize(System.out, xsdElementDeclaration.getElement()) } } } @Test public void testPortType(){ Map portTypes=definition.getPortTypes() System.out.println("Port Type size:"+portTypes.size()) if(portTypes!=null&&portTypes.size()>0){ Set set=portTypes.keySet() Iterator iterator=set.iterator() while(iterator.hasNext()){ QName object=(QName)iterator.next() PortType portType=(PortType)portTypes.get(object) System.out.println("Port Type name:"+portType.getQName()) org.eclipse.xsd.util.XSDResourceImpl.serialize(System.out, portType.getDocumentationElement()) } } } }

①jre是Java的运行环境,你在装jdk的时候,会自动安装jre的

②你看到这些错误,是Eclipse刚刚启动时,还在加载你的workspace工作区,等一会错误就会消失的。

③如果一直显示错误,腔燃那就是你没有导入相应的包判旅,或者倒错了包,或者伍冲虚没有导入其他的jar包,这时你就需要build path加载相应的jar包

④若没有以上的,那就重新启动一下Eclipse。

使用jdom,dom4j等进行解析,还敬掘有正敬一个很强大的东西XStream都可以进行XML *** 作,至于传送,可以放在头部setHeder 如果是对象的话就更简单了使用XMLEncoder java自带的。 XMLEncoder 的实例代码如下: public static String beanToXml(Object obj) t

手打, 满意请采纳。亮清核


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8259242.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存