Java 将Soap标记添加到生成的XML
我需要将此XML更改为下面的XML。我目前使用XSD生成现有xml,java util类使用Jibx设置值和封送,并使用JMS发送消息。任何帮助都将不胜感激。最简单的方法是什么 XSD请求: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>
<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库可以使用它。