获取JAXB异常,如“两个类具有相同的XML类型名称…”,
以下是例外情况的详细信息:
异常在线程"main"com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsExcema: 1计数的IllegalAnnotationExceptions两个类有相同的XML类型名称"城市"。使用@XmlType.name和@XmlType.namespace给它们分配不同的名称。这个问题与以下位置有关:在com.model.市公共com.model.市com.model.A<--plhd#############################################################################################################################>地址
在com。太阳xml。内部的绑定v2。运行时。IllegalAnnotationsException$Builder。在com上检查(未知源)。太阳xml。内部的绑定v2。运行时。JAXBContextImpl。com上的getTypeInfoSet(未知源)。太阳xml。内部的绑定v2。运行时。JAXBContextImpl。(未知来源)在com。太阳xml。内部的绑定v2。运行时。JAXBContextImpl$JAXBContextBuilder。在com上生成(未知源)。太阳xml。内部的绑定v2。上下文工厂。com上的createContext(未知源)。太阳xml。内部的绑定v2。上下文工厂。在sun上创建上下文(未知源)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(未知源)。反映DelegatingMethodAccessorImpl。在java上调用(未知源)。朗。反思。方法在javax调用(未知源)。xml。绑定上下文查找器。javax上的newInstance(未知源代码)。xml。绑定上下文查找器。在javax上查找(未知源代码)。xml。绑定JAXBContext。javax上的newInstance(未知源代码)。xml。绑定JAXBContext。com上的newInstance(未知源)。PojoToXSD。main(PojoToXSD.java:17)
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;
}
“com.common”包中的另一个城市类。
package **com.common**;
public class City {
private String pinCode;
}
我们需要创建XSD,需要对项目中的现有代码进行编组和解编组(如上面的示例代码),代码没有任何诸如“@XmlRootElement/@XmlType”之类的注释,并且我们无法更改源代码。
我想知道有没有解决上述问题的方法,或者其他创建XSD和封送/解封送的方法(比如MOXy..等等)?
如果我能从任何一个人那里得到解决方案,那就太好了......可能提前感谢。
谢谢,
萨蒂亚。
注意:我是Eclipse Link JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。
如果您可以修改类,您可以简单地向其中一个City
类添加一个@XmlType
注释来更改相应的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>
更多信息
1) 我们只需要为一个城市类编写绑定文件,或者需要编写所有其他2个类(我指的是地址和另一个城市)?
MOXy的外部映射文档可用于扩充或完全替换(请参阅:http://blog.bdoughan.com/2011/09/mapping-objects-to-multiple-xml-schemas.html)类上的元数据。如果您只需要对其中一个City
类进行更改,则不需要包括其他类。
2)在绑定文件中,你只考虑了类名,不需要采取在城市中定义的属性(我的意思是PinCode)?
像任何JAXB实现一样,MOXy将默认映射应用于所有类。您只需要提供元数据,说明您希望映射行为与默认行为不同的地方。
3) 我们需要选择莫西来做这个?
JAXB没有标准的外部映射文档。我所描述的是一个MOXy扩展。如果您正在使用JAXB RI,您可以查看与Annox的集成。
问题内容: 获得JAXB异常,例如“两个类具有相同的XML类型名称…”, 这是异常详细信息 : 线程“主”中的异常com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1个IllegalAnnotationExceptions计数 两个类具有相同的XML类型名称“ city”。 使用@ XmlType.name和@ Xml
我们需要创建XSD,并且需要使用项目中的现有代码(如上面的示例代码)进行封送和解封,代码没有任何注释,如“@XMLRootElement/@XMLType”,并且我们无法更改源代码。 我想知道是否有任何解决方案来解决上述问题或任何其他方法来创建xsd和封送/解封(像moxy...等)? 如果我能从任何一个那里得到解决方案就太好了...请提前谢谢。
我用的是spring soap ws。 我有以下对应于复杂类型的JAXB域类 我有以下带有@XmlRegistry注释的类 以下是endpoint 当我发出 Soap 请求时,我正在使用 soap 请求中的终结点中给出NAMESPACE_URI。 在这里,在这种情况下,我得到以下回应 如果我使用"超文本传输协议://命名空间/url"作为NAMESPACE_URI在endpoint和肥皂请求我得到
问题内容: 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,出现异常: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.I
问题内容: 我对此进行了扩展,应该可以帮助我在上下文之间传输对象: 现在它返回的对象,我应该将其强制转换为我想要的类,如下所示: 有没有办法避免这种无用的转换,如果我从类的对象调用使其返回类型? 问题答案: 更新: 有关更好的解决方案 与如何在NSManagedObjectSwift扩展中如何创建托管对象子类的实例中类似,这可以使用通用的辅助方法来完成: 请注意,我已将返回类型更改为。 并 没有
问题内容: 我有一个Animal类和一个名为AnimalExtension的Animal扩展。 这两个类之间的唯一区别是AnimalExtension还有另一个实例变量叫做animalId。Animal没有此实例变量。 我也有自己的数据类型,想要对XML进行封送处理。此数据类型称为AnimalList。在AnimalList内,有一个Animals列表作为实例变量。 animalList可以包含A