• 用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

  • 相关阅读:
    phonegap ios插件开发及无限后台运行解决
    iOS JSON解析
    ios上取得设备唯一标志的解决方案
    为iOS7重新设计你的App
    iOS多线程GCD 研究
    自定义用户环境
    启用SELinux保护
    shell编写一个批量添加用户脚本
    shell编写一个判断脚本
    shell使用特殊变量
  • 原文地址:https://www.cnblogs.com/winstonet/p/6916270.html
Copyright © 2020-2023  润新知