zoukankan      html  css  js  c++  java
  • 用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

  • 相关阅读:
    java面试题2
    java面试题
    查询数据库表字段名和字段类型等信息
    安装eclipse
    redis启动
    eclipse离线安装sonarlint插件
    大白菜安装win10系统
    制作window.ios镜像
    大白菜装机系统
    传递中文字符串时,转换编码格式
  • 原文地址:https://www.cnblogs.com/winstonet/p/6916270.html
Copyright © 2011-2022 走看看