用WSDL4J解析types标签中的内容

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

时间: 2024-10-10 04:54:09

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

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

 1 PersonTestMapper.xml中的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:命名空间

用正则表达式替换指定标签中的内容

用正则表达式替换指定标签中的内容,也是在工作中遇到的就顺手记了下来 string sXML = "ABCDEFCSF<p>123123</p>KOPL";//现在我要去掉P标签中的内容,实现 ABCDEFCSFKOPL这样的效果. 引入:using System.Text.RegularExpressions; Regex rg = new Regex("<pict>.*</pict>"); sXML = rg.Rep

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

一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获取列表文本:可用于校验列表是否存在你需要的文本内容 1.获取内容不包含嵌套层列表 给出代码: from selenium import webdriver import time d = webdriver.Chrome() d.maximize_window() # 窗口最大化###登录某网站 d.get(

获取标签中的内容

1.元素.innerText        js设置或获取标签中的文本 var box=document.getElementById('box') box.innerText='四大皆空' var box=document.getElementById('box') console.log(box.innerText ) 2.元素.innerHTML     js设置或获取标签中的内容(包括 HTML 标记) var box=document.getElementById('box') box

&lt;转载&gt;html中head标签中的内容

定义和用法 <head> 标签用于定义文档的头部,它是所有头部元素的容器.<head> 中的元素可以引用脚本.指示浏览器在哪里找到样式表.提供元信息等等. 文档的头部描述了文档的各种属性和信息,包括文档的标题.在 Web 中的位置以及和其他文档的关系等.绝大多数文档头部包含的数据都不会真正作为内容显示给读者. 下面这些标签可用在 head 部分:<base>, <link>, <meta>, <script>, <style&g

css基础 给p标签中的内容 加粗,斜体,下划线,字体大小

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ part code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8

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

string str = @"<td>Csdn</td>\r\n<td>V1.0</td>\r\n<td>2014-10-23</td>\r\n</tr> \r\n<td>MJH</td>\r\n<td>V1.0</td>\r\n<td>2014-10-23</td>"; List<string> list = new

清空select标签中的内容

<select id="search"><option>baidu</option><option>sogou</option></select> 清空:$("#search").find("option").remove();或者$("#search").empty();

通过js去掉所有的html标签,得到HTML标签中的所有内容

<script> //替换掉所有的 html标签,得到Html标签中的内容 var s="<P><FONT face=宋体 color=#000000>    北京中航宇飞科技有限公司是一家致力于为中国国防工业服务的高新企业.<BR> <BR>    事业一部 主要以连接器.常异型热缩套管和电缆组件的外协加工为主.凭借泰兴这个得天独厚的连接器生产基地的优势,公司生产圆形J599.J598.XC.Y2.Y3.Y4.Y11X.Y17.Y50