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

获得类似“两个类具有相同的XML类型名称……”的JAXB异常。

梁丘俊材
2023-03-14
package **com.model**; ---->this package contains 'Address' class and 'City' class

public class Address {

    private String areaName;
    private City currentCity;
    private com.common.City previousCity;
}

package com.model;

public class City {

    private String cityName;
}
package **com.common**;

public class City {

    private String pinCode;
}

我们需要创建XSD,并且需要使用项目中的现有代码(如上面的示例代码)进行封送和解封,代码没有任何注释,如“@XMLRootElement/@XMLType”,并且我们无法更改源代码。

我想知道是否有任何解决方案来解决上述问题或任何其他方法来创建xsd和封送/解封(像moxy...等)?

如果我能从任何一个那里得到解决方案就太好了...请提前谢谢。

共有1个答案

田曜瑞
2023-03-14

注意:我是EclipseLink JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。

如果可以修改类,则只需将@XMLType注释添加City类之一,以更改相应的XML模式类型名称。

package **com.common**;

@XmlType(name="city2")
public class City {

    private String pinCode;
}

MOXy提供了一个外部映射文档扩展,可用于将JAXB元数据应用到无法更改的类。

<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="**com.common**">
    <java-types>
        <java-type name="City">
            <xml-type name="city2"/>
        </java-type>
    </java-types>
</xml-bindings>
    null
  • http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html

3)我们需要为此选择MOXy?

JAXB没有标准的外部映射文档。我所描述的是一个MOXy扩展。如果您正在使用JAXB RI,您可以查看与Annox的集成。

    null
 类似资料:
  • 问题内容: 获得JAXB异常,例如“两个类具有相同的XML类型名称…”, 这是异常详细信息 : 线程“主”中的异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1个IllegalAnnotationExceptions计数 两个类具有相同的XML类型名称“ city”。 使用@ XmlType.name和@ Xml

  • 获取JAXB异常,如“两个类具有相同的XML类型名称…”, 以下是例外情况的详细信息: 异常在线程"main"com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsExcema: 1计数的IllegalAnnotationExceptions两个类有相同的XML类型名称"城市"。使用@XmlType.name和@XmlType.namespa

  • 问题内容: 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,出现异常: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.I

  • 问题内容: 我有一个Animal类和一个名为AnimalExtension的Animal扩展。 这两个类之间的唯一区别是AnimalExtension还有另一个实例变量叫做animalId。Animal没有此实例变量。 我也有自己的数据类型,想要对XML进行封送处理。此数据类型称为AnimalList。在AnimalList内,有一个Animals列表作为实例变量。 animalList可以包含A

  • 我从 3 个不同的客户端收到 3 个不同的 xml 输入: 来自客户端1的输入1:(命名空间前缀:,命名空间url:) 来自客户端 2 的输入 2:(命名空间前缀:,命名空间 URL:) 从客户端3输入3:(名称空间前缀: 时,< li >调用< code>String.replace() 这让我想到这种变量命名空间的方法是否应该完全可以接受。如果有什么可以改进此代码的方法,那么我要求社区在答案/

  • 问题内容: 以下代码可以正常工作。在两个不同的结构上操作并打印该结构的字段的两种方法: 在控制台中显示所需的输出: 现在 ,如果我以以下方式更改方法签名,则会出现编译错误。我只是将方法的接收者移动到方法的参数: 我什至无法编译程序: 问 :为什么 当 方法具有相同的名称和Arity 时 ,我可以在接收器中互换结构类型,而不能在参数中互换结构类型? 问题答案: 因为Go不支持在其参数类型上重载用户定