java - 从 POJO 生成 SOAP XML

标签 java xml soap

Hello 出于日志记录和调试目的,我需要以 SOAP XML 形式将 spring bean 的输入 POJO 存储在 DB 中。你能帮助我使用哪个库吗?你有一些代码示例如何从 POJO 对象创建 SOAP XML 吗?我尝试使用 javax.xml.soap.* 生成 SOAP 信封、 header 和正文,并使用 JAXB 从 POJO 生成 xml。 javax.xml.soap.* 工作正常,但我对 POJO xml 中的 namespace 有疑问。有没有办法自动生成命名空间?例如……

我没有命名空间的输出是

<?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.

最佳答案

可以使用包级注解javax.xml.bind.annotation.XmlSchema来完成这个。然后,JAXB 将从给定命名空间中带注释的包中的 pojo 生成 XML。

如果您愿意,也可以使用 javax.xml.bind.annotation.XmlType 在逐个类的基础上执行此操作注释或逐个字段地使用 javax.xml.bind.annotation.XmlElement注释。

关于java - 从 POJO 生成 SOAP XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834586/

相关文章:

soap - 带附件的ColdFusion SOAP响应

java - MySQL 连接超过 3 个表

java - 有官方的 MRSS xsd 吗?

java - 使用 EJB 3.1 和 jboss 在集群上缓存数据

xml - 如何解析和修改xml标签

java - 无法更改 Material TextInputEditText 的光标和气泡颜色

python - 用 Python 加密 SOAP 信封

java - SOAP 处理程序 org.w3c.dom.DOMException : HIERARCHY_REQUEST_ERR:

java - jar 文件中的 Spring 上下文

java - 创建 ObjectInputStream 时线程挂起