Java 将Soap标记添加到生成的XML

Java 将Soap标记添加到生成的XML,java,xml,soap,xsd,spring-jms,Java,Xml,Soap,Xsd,Spring Jms,我需要将此XML更改为下面的XML。我目前使用XSD生成现有xml,java util类使用Jibx设置值和封送,并使用JMS发送消息。任何帮助都将不胜感激。最简单的方法是什么 XSD请求: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="Request"> <xsd:annotation>

我需要将此XML更改为下面的XML。我目前使用XSD生成现有xml,java util类使用Jibx设置值和封送,并使用JMS发送消息。任何帮助都将不胜感激。最简单的方法是什么

XSD请求:

<xsd:schema 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="Request">
            <xsd:annotation>
                <xsd:documentation>
                    A request.
                </xsd:documentation>
            </xsd:annotation>
            <xsd:sequence>
                <xsd:element name="Header" type="Header" />
                <xsd:element name="RequestBody" type="RequestBody" />
            </xsd:sequence>
        </xsd:complexType>

请求。
标头的XSD:

<xsd:complexType name="Header" abstract="true">
        <xsd:annotation>
            <xsd:documentation>
                The definition of a Header.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="HeaderVersion" type="HeaderVersion" />
            <xsd:element name="ServiceName" type="ServiceName" />
            <xsd:element name="ServiceVersion" type="ServiceVersion" />
            <xsd:element name="ServiceType" type="ServiceType" />
            <xsd:element name="ApplicationId" type="ApplicationId" />           
        </xsd:sequence>
    </xsd:complexType>

标题的定义。
现有生成的XML:

<Request><Header><HeaderVersion>1.0</HeaderVersion><ServiceName>Service</ServiceName><ServiceVersion>1.0</ServiceVersion><ServiceType>search</ServiceType><ApplicationId>1</ApplicationId></Header><RequestBody><UserInfo><UserId>SYSTEM</UserId><RoleNames/></UserInfo><GetRequest><Type>123</Type></GetRequest></RequestBody></Request>
1.0Service1.0Search1System 123
应生成该文件,以:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <Header>
            <ServiceVersion>1.0</ServiceVersion>
            <ServiceName>Service</ServiceName>
            <HeaderVersion>1.0</HeaderVersion>
        </Header>
        <TimeStamp>
            <Millis>1429884619658</Millis>
            <Formatted>2015 04 24 14:10:19</Formatted>
        </TimeStamp>
    </soapenv:Header>
    <soapenv:Body>
        <ns9:GetRequest xmlns="" xmlns:ns6="http://example.com/schemas/common" xmlns:ns7="http://example.com/schemas/service" xmlns:ns8="http://example.com/schemas/common" xmlns:ns9="http://example.com/schemas/service">
            <Type>123</Type>
        </ns9:GetRequest>
    </soapenv:Body>
</soapenv:Envelope>

1
服务
1
1429884619658
2015 04 24 14:10:19
123

您是否在询问生成此消息的新XSD for头应该是什么?现在我也不明白为什么在现有的XML中有一个抽象头类型和no-xsi:type属性。我已经更新了这个问题,将xsd包含在标题中。希望这能回答你的问题。非常感谢。也许你应该把标题改为“SpringJMS上的soap消息”?我可以找到一个类似的话题。您的请求定义远非Soap:envelope消息。应该有框架细节来帮助实现这一点,我认为您不必手动生成完整的soap:Envelope,可能只需要将头部和正文分开。听起来您正在尝试对soap协议进行反向工程。我不知道spring,但我打赌有一个soap库可以使用它。