gpt4 book ai didi

java - 从 POJO 生成 SOAP XML

转载 作者:行者123 更新时间:2023-11-29 09:16:57 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com