Hello for loging and debuging目的我需要以SOAP XML格式在DB中存储spring bean的输入POJO。你能帮助我使用哪个库吗?你有没有一些代码示例如何从POJO对象创建SOAP XML。我尝试使用javax.xml.soap。*来生成SOAP Envelope,Header和Body,以及用于从POJO生成xml的JAXB。 javax.xml.soap。*工作正常,但我在POJO xml中有命名空间问题。有没有办法自动生成名称空间?例如......
我没有命名空间的输出是
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<z:getClientDetail xmlns:z="my.package">
<client>
<adresses>
<city>Praha</city>
<houseNumber>1455</houseNumber>
<street>Hudeckova</street>
</adresses>
<adresses>
<city>Brno</city>
<houseNumber>44</houseNumber>
<street>Tupolevova</street>
</adresses>
<firstName>Standa</firstName>
<lastName>Vrana</lastName>
</client>
</z:getClientDetail>
但是使用命名空间的正确输出是
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<z:getClientDetail xmlns:z="my.package">
<java:client xmlns:java="my.package.dto">
<java:adresses>
<java:city>Praha</city>
<java:houseNumber>1455</houseNumber>
<java:street>Hudeckova</street>
</java:adresses>
<java:adresses>
<java:city>Brno</city>
<java:houseNumber>44</houseNumber>
<java:street>Tupolevova</street>
</java:adresses>
<java:firstName>Standa</firstName>
<java:lastName>Vrana</lastName>
</java:client>
</z:getClientDetail>
谢谢P。
答案 0 :(得分:0)
您可以使用包级别注释javax.xml.bind.annotation.XmlSchema
来完成此操作。然后,JAXB将从给定命名空间中带注释的包中的pojo生成XML。
如果您愿意,也可以使用javax.xml.bind.annotation.XmlType
注释逐个类别地或使用javax.xml.bind.annotation.XmlElement
注释逐个字段地执行此操作。
答案 1 :(得分:0)
为什么要以SOAP XML格式在DB中存储数据?
要从POJO对象创建SOAP XML,您可以手动编写所有静态部分,并将所有动态值放在POJO中,如下所示。 例如:
String request = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"> <soapenv:Header><tem:B2BCode>"+pojo.getPojoObject+"</tem:B2BCode></soapenv:Header></soapenv:Envelope>"