JAXB简化插件vs * .xjb [英] JAXB Simplify plugin vs *.xjb

查看:138
本文介绍了JAXB简化插件vs * .xjb的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用简化插件来替换复杂的属性有一套更简单的。我按照插件的手册开始工作。但我无法更改原始架构,因此我必须使用外部bindings.xjb。它给了我各种错误。有人有类似事情的工作示例吗?

I'm trying to use the Simplify plugin to replace a complex property with a set of simpler ones. I made it working following the plugin's manual. But I can't change the original schema, so I have to use an external bindings.xjb. And it gives me all sort of errors. Does somebody have a working example of a similar thing?

原始XSD:

<xs:schema id="messages"
    elementFormDefault="qualified"
    version="Exchange2010_SP2"
    xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:tns="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://schemas.microsoft.com/exchange/services/2006/messages">

<xs:import namespace="http://schemas.microsoft.com/exchange/services/2006/types" schemaLocation="types.xsd"/>

...

<xs:complexType name="ArrayOfResponseMessagesType">
    <xs:choice maxOccurs="unbounded">
        <xs:element name="CreateItemResponseMessage" type="m:ItemInfoResponseMessageType"/>
        <xs:element name="DeleteItemResponseMessage" type="m:ResponseMessageType"/>
        <xs:element name="GetItemResponseMessage" type="m:ItemInfoResponseMessageType"/>

        ...

    </xs:choice>
</xs:complexType>

修改后的XSD对我有用:

<xs:schema id="messages"
    elementFormDefault="qualified"
    version="Exchange2010_SP2"
    xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:tns="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    jaxb:extensionBindingPrefixes="simplify"
    targetNamespace="http://schemas.microsoft.com/exchange/services/2006/messages">

<xs:import namespace="http://schemas.microsoft.com/exchange/services/2006/types" schemaLocation="types.xsd"/>

...

<xs:complexType name="ArrayOfResponseMessagesType">
    <xs:choice maxOccurs="unbounded">
        <xs:element name="CreateItemResponseMessage" type="m:ItemInfoResponseMessageType">
          <xs:annotation>
            <xs:appinfo>
              <simplify:as-element-property/>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name="DeleteItemResponseMessage" type="m:ResponseMessageType"/>
        <xs:element name="GetItemResponseMessage" type="m:ItemInfoResponseMessageType"/>

        ...

    </xs:choice>
</xs:complexType>

我的bindings.xjb(我想使用而不是更改架构):

<bindings version="2.1"
      xmlns="http://java.sun.com/xml/ns/jaxb"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
      extensionBindingPrefixes="simplify">
<bindings schemaLocation="../wsdl/messages.xsd" node="/xs:schema/xs:complexType[@name='ArrayOfResponseMessagesType']/xs:choice/xs:element[1]">
    <xs:annotation>
        <xs:appinfo>
            <simplify:as-element-property/>
        </xs:appinfo>
    </xs:annotation>
</bindings>
</bindings>

我当前的例外

org.xml.sax.SAXParseException: Unsupported binding namespace "http://www.w3.org/2001/XMLSchema". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?


推荐答案

好的,我想出来了。以下是使其正常工作的配置:

Ok, I figured this out. Here is the configuration that made it working:

<bindings version="2.1"
      xmlns="http://java.sun.com/xml/ns/jaxb"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
      extensionBindingPrefixes="simplify">


  <bindings schemaLocation="../wsdl/messages.xsd" node="/xs:schema/xs:complexType[@name='ArrayOfResponseMessagesType']/xs:choice/xs:element[1]">
    <simplify:as-element-property/>
  </bindings>

</bindings>

这很简单。

这篇关于JAXB简化插件vs * .xjb的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆