【发布时间】:2014-10-14 15:51:20
【问题描述】:
我使用 JAXB xjc 工具生成了多个 XML 文件中的多个类。
这些 XML 文件具有常见的标记名称,这涉及到,当我生成 java 类时,我有 多个具有相同名称的类。我已将它们放入不同的包中并因此对其进行了重命名。
但我仍然有这个错误:
元素名称 {}Document 具有多个映射。这个问题 与以下位置有关:在公共 javax.xml.bind.JAXBElement com.xxx.generatedByJaxb.bal.ObjectFactory.createDocument(com.xxx.generatedByJaxb.bal.DocumentTypeBal) 在 com.xxx.generatedByJaxb.bal.ObjectFactory 这个问题是 与以下地点有关:在公共场所 javax.xml.bind.JAXBElement com.xxx.generatedByJaxb.addr.ObjectFactory.createDocument(com.xxx.generatedByJaxb.addr.DocumentTypeAddr) 在 com.xxx.generatedByJaxb.addr.ObjectFactory
...在控制台中重复了很多次。
编辑
当我第一次遇到冲突问题时,我重命名了冲突类,例如:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DocumentType", propOrder = { "addressPage" })
public class DocumentType {
已更改为:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DocumentTypeAddr", propOrder = { "addressPage" })
public class DocumentTypeAddr {
我重新生成了类,无需任何手动更改即可知道它们。这是我遇到的错误:
两个类具有相同的 XML 类型名称“DocumentType”。使用@XmlType.name 和@XmlType.namespace 为它们分配不同的名称。 此问题与以下位置有关: 在 com.xxx.generatedByJaxb.addr.DocumentType 在公共 com.xxx.generatedByJaxb.addr.DocumentType com.xxx.generatedByJaxb.addr.ObjectFactory.createDocumentType() 在 com.xxx.generatedByJaxb.addr.ObjectFactory 此问题与以下位置有关: 在 com.xxx.generatedByJaxb.bal.DocumentType 在公共 com.xxx.generatedByJaxb.bal.DocumentType com.xxx.generatedByJaxb.bal.ObjectFactory.createDocumentType() 在 com.xxx.generatedByJaxb.bal.ObjectFactory 元素名称 {}Document 具有多个映射。 此问题与以下位置有关: 在公共 javax.xml.bind.JAXBElement com.xxx.generatedByJaxb.bal.ObjectFactory.createDocument(com.xxx.generatedByJaxb.bal.DocumentType) 在 com.xxx.generatedByJaxb.bal.ObjectFactory 此问题与以下位置有关: 在公共 javax.xml.bind.JAXBElement com.xxx.generatedByJaxb.addr.ObjectFactory.createDocument(com.xxx.generatedByJaxb.addr.DocumentType) 在 com.xxx.generatedByJaxb.addr.ObjectFactory
这是一个 xsd 文件的示例(在我从中生成类的 7 个 xsd 文件之间):
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="Document" type="DocumentType"/>
<xs:complexType name="DateType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="Type"/>
<xs:attribute type="xs:int" name="Date"/>
<xs:attribute type="xs:byte" name="HH"/>
<xs:attribute type="xs:byte" name="MM"/>
<xs:attribute type="xs:byte" name="SS"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ChargeType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:short" name="Id" use="optional"/>
<xs:attribute type="xs:float" name="Amount" use="optional"/>
<xs:attribute type="xs:string" name="CurrCode" use="optional"/>
<xs:attribute type="xs:byte" name="Type" use="optional"/>
<xs:attribute type="xs:string" name="PT" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="BalancePageType">
<xs:sequence>
<xs:element type="DateType" name="Date"/>
<xs:element type="ChargeType" name="Charge" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DocumentType">
<xs:sequence>
<xs:element type="BalancePageType" name="BalancePage"/>
</xs:sequence>
<xs:attribute type="xs:string" name="Sender"/>
<xs:attribute type="xs:string" name="Id"/>
<xs:attribute type="xs:string" name="BAId"/>
</xs:complexType>
</xs:schema>
【问题讨论】:
-
请发布您的架构和冲突类的示例。
-
有很多类发生冲突
-
XML 文件是保密的,抱歉
-
我尝试为每个类定义一个不同的命名空间,但它不起作用
-
您的架构中有
targetNamespace属性吗?