WSDL4J是一种用来解析WSDL文本的常用工具。

但网络上用WSDL4J来解析wsdl文档complexType标签中内容的问题一大堆也没有有效的解决方法。今天在我“遍历”wsdl4j的api文档和网络资源后找到一种通用的解决方案,试了一下成功了。
首先我参考了http://hi.baidu.com/wxmsona/blog/item/39b93444ee34842dcefca34c.html的解决方案。但这种解决方案不是我要找的通用的解决方案,因为这种方案在用DOM解析时用getElementsByTagName方法时是默认TagName属性已知,如complexType或s:complexType等等。所以,我必须要找到能获取types标签中子标签的Prefix的方法,再接上标签名,如Prefix为"xs”,则解析时调用getElementsByTagName方法时就应该是getElementsByTagName(Prefix+":complexType")这样了。关键是怎样获取Prefix。其实最简单的方法是用解析字符串的方式获取,但感觉不规范,这里就不罗嗦了。下面进入正题。

首先,以下一些处理是必不可少的:
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
reader.setFeature("javax.wsdl.verbose", true);
reader.setFeature("javax.wsdl.importDocuments", true);
Definition def = reader.readWSDL("complex1.wsdl");
WSDLWriter writer = factory.newWSDLWriter();
Document doc = writer.getDocument(def);

// 获取types
Types types = def.getTypes();
// 若types内容为空则不查找complexType
if(types==null){
     return ;
}

List list = types.getExtensibilityElements();
// 默认types标签中只包含一个直接子标签
ExtensibilityElement extensibilityElement = (ExtensibilityElement)list.get(0);
Schema schema = (Schema)extensibilityElement;   
String prefix = schema.getElement().getPrefix();

到这里就获取了prefix了,其余的就可以直接参考http://hi.baidu.com/wxmsona/blog/item/39b93444ee34842dcefca34c.html

用WSDL4J解析types标签中的内容的更多相关文章

  1. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

  2. javascript jquery 修改指定标签中的内容

    javascript jquery 修改指定标签中的内容 $("#test1").text("Hello world!"); document.getEleme ...

  3. python+selenium遍历某一个标签中的内容

    一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获 ...

  4. js修改div标签中的内容

    <div id='divId'>初始文字</div> <script> $(document).ready(function(e){ $('#divId').htm ...

  5. js 复制 标签中的内容 方法

    <span id='id'>hello world</span><input type='button' onClick='copy("id")' v ...

  6. PHP 导出网页表格如何对标签中的内容设置属性

    当在使用php导出excel表格的时候,有时需要将某一列专门设置成文本属性 方法: 在需要设置属性的的<td>标签中 添加  style='vnd.ms-excel.numberforma ...

  7. Spring源码分析(九)解析默认标签中的自定义标签元素

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 到这里我们已经完成了分析默认标签的解析与提取过程,或许涉及的内容太多,我 ...

  8. 在HTML中改变input标签中的内容

    在HTML中改变input标签的内容 1.使用js自带的方法: document.getElementById('roadName').value='武汉路';//通过标签选择器来选择标签,然后设置值 ...

  9. ASP.NET - 匹配标签中的内容

    string str = @"<td>Csdn</td>\r\n<td>V1.0</td>\r\n<td>2014-10-23&l ...

随机推荐

  1. Zabbix WMI监控

    检查Windows OS是否激活,5表示处于通知模式,1表示已激活 wmi.get[root\cimv2,select LicenseStatus FROM SoftwareLicensingProd ...

  2. LeetCode算法题-Word Pattern(Java实现)

    这是悦乐书的第202次更新,第212篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第68题(顺位题号是290).给定一个模式和一个字符串str,找到str是否完全匹配该模 ...

  3. LeetCode算法题-Isomorphic Strings(Java实现)

    这是悦乐书的第191次更新,第194篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第50题(顺位题号是205).给定两个字符串s和t,确定它们是否是同构的.如果s中的字符 ...

  4. Docker: docker image常用命令实战

    #docker列出镜像[root@192 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 881bd08c0b08 ...

  5. 卸载安装node npm (Mac linux )

    1. 卸载node npm (1) 先卸载 npm: sudo npm uninstall npm -g (2) 然后卸载 Node.js. (2.1) 如果是 Ubuntu 系统并使用 apt-ge ...

  6. python3内置函数练习

    1. abs() abs() 函数返回数字的绝对值. print(abs(1.5236)) # 1.5236 print(abs(1.0)) # 1.0 2. all() all() 函数用于判断给定 ...

  7. E. Magic Stones CF 思维题

    E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  8. Android Call requires API level 19 (current min is 15)

    在 Android 应用开发时候,配置文件中声明了支持的Android系统范围: minSdkVersion 15targetSdkVersion 27 但是代码中需要使用的一个类 (android. ...

  9. 安装 Kivy

    Kivy 是基于Python编程语言的一种用于开发跨平台GUI客户端程序的框架.可以打包成iOS.Android.Windows.OSX等多种平台.目前已经实现一次编码,到处运行的目的. Kivy框架 ...

  10. L2-012 关于堆的判断 (25 分)

    就是一个最小根堆. 最小根堆的性质,根节点小于等于子树的完全二叉树吧. 构建最小根堆的过程就是一个自下向上的过程. #include<iostream> #include<strin ...