Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java xjc错误-已使用多个架构文件定义_Java_Xjc - Fatal编程技术网

Java xjc错误-已使用多个架构文件定义

Java xjc错误-已使用多个架构文件定义,java,xjc,Java,Xjc,我们有相当多的xsd模式文件是由其他一些我们无法控制的源创建的。当我们尝试使用xjc生成java类时,我们发现在一起编译时已经定义了错误类型。我们使用bindings文件查看了定制,但找不到任何与我们的案例相关的内容。通过附加的xsd文件,我们希望看到生成一个TESTBody.java类,如下所示: public class TESTBody { protected MsgType1 msgType1; protected MsgType2 msgType2; prote

我们有相当多的xsd模式文件是由其他一些我们无法控制的源创建的。当我们尝试使用xjc生成java类时,我们发现在一起编译时已经定义了错误类型。我们使用bindings文件查看了定制,但找不到任何与我们的案例相关的内容。通过附加的xsd文件,我们希望看到生成一个TESTBody.java类,如下所示:

public class TESTBody {
    protected MsgType1 msgType1;
    protected MsgType2 msgType2;
    protected MsgType3 msgType3;
    ...
}
有人能提供一些帮助或提示吗

提前谢谢

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:complexType name="TEST_Header">
        <xs:sequence>
            <xs:element name="sender" type="xs:string" />
            <xs:element name="receiver" type="xs:string" />
            <xs:element name="version" type="xs:integer" />
            <xs:element name="sequenceNo" type="xs:string" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>


</xs:schema>

================================

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType1" type="msgType1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType1">
        <xs:sequence>
            <xs:element name="firstName" type="xs:string" />
            <xs:element name="lastName" type="xs:string" />
            <xs:element name="addressLine1" type="xs:string" />
            <xs:element name="addressLine2" type="xs:string" />
            <xs:element name="age" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>    
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType2" type="msgType2" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType2">
        <xs:sequence>
            <xs:element name="className" type="xs:string" />
            <xs:element name="teacherName" type="xs:string" />
            <xs:element name="textBook" type="xs:string" />
            <xs:element name="classRoom" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType3" type="msgType3" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType3">
        <xs:sequence>
            <xs:element name="eventName" type="xs:string" />
            <xs:element name="eventDescription" type="xs:string" />
            <xs:element name="eventLocation" type="xs:string" />
            <xs:element name="eventTime" type="xs:date" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>

================================

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType1" type="msgType1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType1">
        <xs:sequence>
            <xs:element name="firstName" type="xs:string" />
            <xs:element name="lastName" type="xs:string" />
            <xs:element name="addressLine1" type="xs:string" />
            <xs:element name="addressLine2" type="xs:string" />
            <xs:element name="age" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>    
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType2" type="msgType2" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType2">
        <xs:sequence>
            <xs:element name="className" type="xs:string" />
            <xs:element name="teacherName" type="xs:string" />
            <xs:element name="textBook" type="xs:string" />
            <xs:element name="classRoom" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType3" type="msgType3" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType3">
        <xs:sequence>
            <xs:element name="eventName" type="xs:string" />
            <xs:element name="eventDescription" type="xs:string" />
            <xs:element name="eventLocation" type="xs:string" />
            <xs:element name="eventTime" type="xs:date" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>

================================

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType1" type="msgType1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType1">
        <xs:sequence>
            <xs:element name="firstName" type="xs:string" />
            <xs:element name="lastName" type="xs:string" />
            <xs:element name="addressLine1" type="xs:string" />
            <xs:element name="addressLine2" type="xs:string" />
            <xs:element name="age" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>    
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType2" type="msgType2" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType2">
        <xs:sequence>
            <xs:element name="className" type="xs:string" />
            <xs:element name="teacherName" type="xs:string" />
            <xs:element name="textBook" type="xs:string" />
            <xs:element name="classRoom" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType3" type="msgType3" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType3">
        <xs:sequence>
            <xs:element name="eventName" type="xs:string" />
            <xs:element name="eventDescription" type="xs:string" />
            <xs:element name="eventLocation" type="xs:string" />
            <xs:element name="eventTime" type="xs:date" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>


=========================

您在3个不同的架构中定义了相同的类型。你想让XJC做什么?!重命名类型或给它们不同的名称空间。只是想知道是否有一种方法可以将模式文件分组在一起,生成类似上面给出的java类的内容。当然可以。但是您只需要定义一次类型。否则xjc不知道该怎么办。就像在同一个包中不能有两个同名的类一样。如果您将测试主体移动到另一个公共模式,并将其抽象化,然后在每个可以工作的模式中扩展它,那么我们需要更改其他人创建的模式文件。有没有办法通过使用绑定文件之类的东西来避免更改它们?您可以使用绑定将不同的XML推送到不同的包中。这不会解决名称空间冲突,因此可能无法解决该问题。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType1" type="msgType1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType1">
        <xs:sequence>
            <xs:element name="firstName" type="xs:string" />
            <xs:element name="lastName" type="xs:string" />
            <xs:element name="addressLine1" type="xs:string" />
            <xs:element name="addressLine2" type="xs:string" />
            <xs:element name="age" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>    
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType2" type="msgType2" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType2">
        <xs:sequence>
            <xs:element name="className" type="xs:string" />
            <xs:element name="teacherName" type="xs:string" />
            <xs:element name="textBook" type="xs:string" />
            <xs:element name="classRoom" type="xs:integer" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="TEST_HeaderType.xsd" />

    <xs:element name="TEST_Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TEST_Header" type="TEST_Header" />
                <xs:element name="TEST_Body" type="TEST_Body" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--#DOCUMENTATION:Second child element; contains the message payload-->
    <xs:complexType name="TEST_Body">
        <xs:sequence>
            <xs:element name="msgType3" type="msgType3" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="msgType3">
        <xs:sequence>
            <xs:element name="eventName" type="xs:string" />
            <xs:element name="eventDescription" type="xs:string" />
            <xs:element name="eventLocation" type="xs:string" />
            <xs:element name="eventTime" type="xs:date" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>