当前位置: 首页 > 知识库问答 >
问题:

重复类重命名

包和泰
2023-03-14

嗨,我想知道是否有人能帮我。我有两个。xsd架构文件顺序服务顺序。xsd和order。xsd,每个xsd都将元素类型命名为“order”。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://xml.xxxxxxxx.com/order"  
<xs:element name="order">
   <xs:complexType>
       <xs:sequence>
           <xs:element name="client" type="xs:string" minOccurs="0" maxOccurs="1" />
                   more elements here
      </xs:sequence>
   </xs:complexType>
</xs:element>

</xs:schema>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://xml.xxxxxxxx.com/order"  

<xs:element name="order">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="orderNumber" type="xs:string" minOccurs="1" maxOccurs="1" />
                more elements here
        </xs:sequence>
    </xs:complexType>
</xs:element>
<jxb:bindings schemaLocation="../XSD/v1.0/Representation/orderservice-order.xsd">
    <jxb:bindings node="//xs:element[@name='order']/xs:complexType">
        <jxb:class name="OSOrder" />
    </jxb:bindings>
</jxb:bindings>

当我开始为这些模式文件创建Java源代码时,我显然在Order类上遇到了类名冲突。

我创建了一个jaxb bindings. xjb文件来重命名从orderservice-order.xsd.生成的订单类名

然而,我仍然得到以下错误

...XSD/v1.0/Representation/orderservice-order.xsd; lineNumber: 69;  columnNumber: 15; 'order' is already defined

中的XPATH似乎没有问题。xjb文件。如果我重命名orderservice order中的元素。xsd表示orderNew并将xpath更改为

node="//xs:element[@name='orderNew']/xs:complexType" 

显然没有名称冲突,但是类被重命名为OSOrder

这就好像在绑定文件重命名开始之前对模式文件进行了一些预验证。我尝试过关闭各种jaxb/maven设置,如严格验证等,但没有效果。

有人见过这个,知道怎么解决吗???顺便说一下,我不控制模式文件的内容。

非常感谢。

我正在使用Java 7上运行的maven插件jaxb2 maven插件版本1.3和jaxb版本2.0。

    <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <id>Representations</id>
                    <configuration>
                        <schemaDirectory>XSD/v1.0/Representation</schemaDirectory>
                        <packageName>com.xxxxxxxxx.xml.representation.v1</packageName>
                        <bindingDirectory>XSD/v1.0/Representation</bindingDirectory>
                        <outputDirectory>src/main/generated-sources</outputDirectory>
                        <staleFile>${project.build.directory}/generated-sources/jaxb/.representation</staleFile>
                        <clearOutputDir>false</clearOutputDir>
                    </configuration>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution> 

共有1个答案

温成济
2023-03-14

在JAXB绑定中,如果需要,可以为每个文件指定绑定,并根据需要为每个文件重命名类以解决冲突。

下面是一个例子:

<jxb:bindings schemaLocation="order.xsd">
    <jxb:bindings node="//xs:element[@name='order']">
        <jxb:class name="Order" implClass="Order"/>
    </jxb:bindings> 
</jxb:bindings>

<jxb:bindings schemaLocation="orderservice-order.xsd">
    <jxb:bindings node="//xs:element[@name='order']">
        <jxb:class name="OSOrder" implClass="OSOrder"/>
    </jxb:bindings>
</jxb:bindings>

以下是文档:http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html

我设法在我这边重现了这个问题。问题是目标命名空间:

targetNamespace="http://xml.xxxxxxxx.com/order"

两个XSD中的目标名称空间相同。因此,在同一名称空间中定义两次类型顺序,这是不可能的。如果您更改了目标名称空间,就不会再有问题了。

orderservice订单示例。xsd,我将目标命名空间更改为:

targetNamespace="http://xml.xxxxxxxx.com/orderservice-order"

我不再有这个问题了。

 类似资料:
  • 我正在尝试重命名/删除一个 Mongo 集合,我无意中放了一个 .(点) 在数据库集合名称的末尾,因此集合名称如下所示: 收藏品名称。 我无法找到一种方法来使用包含点号的集合名称来删除或重命名集合,而不会返回错误。 任何建议这是否是可能的。

  • 以下代码来自类: http://developer.classpath.org/doc/java/util/arrays-source.html

  • 问题内容: 这个问题已经在这里有了答案 : 如何快速重命名MySQL数据库(更改架构名称)? (47个答案) 5年前关闭。 我创建了一个名为的数据库。现在,我需要将数据库名称更改为。但是,它在MySQL工作台中被禁用。我可以在Linux服务器本身上执行此操作吗? 问题答案: 我认为您无法做到这一点。我认为您需要转储该数据库,创建新命名的数据库,然后导入转储。 如果这是一个实时系统,则需要将其删除。

  • 问题内容: 我可以使用此查询找出重复的数据 我能够获取重复数据。我只需要知道如何使用名称将重复数据重命名为 new 问题答案: 假设您在表上有某种主键,例如自动增量ID,则可以执行以下操作。 为了说明,它将查找重复的任何内容,为该集中的所有内容获取最大ID,并在其末尾附加“副本1”。如果您有3次或多次使用某些名称,则可能仍会留下一些重复项。只需再次运行它,这次使用“副本2”而不是“副本1”。继续重

  • 我还尝试了以下操作: 同样,在我运行脚本之后,不会出现。我只有前两个字段名;第三个不停地掉下来。我该怎么解决这个?

  • 我有一个原型项目,它的外观如下所示(有两个模块,和): 并且,当我使用工件id为“infra”的原型生成一个项目时,它应该生成如下结构: 不起作用的是,在父pom.xml中,我包含了以下模块: 这些模块条目不会被重命名为类似于(在生成时): 这就是我想要的。 知道怎么做吗,谢谢。 更新我在这里按要求添加元数据xml文件,但我不想修改archetype-metadata.xml文件。因为我想使用cr