【问题标题】:Best Practice XML Request Builder in JavaJava 中的最佳实践 XML 请求生成器
【发布时间】:2026-02-15 21:15:01
【问题描述】:

我正在用 Java 开发一个安静的 Web 服务。我的一项服务需要调用 SOAP 服务,为此我需要构建一个 XML 请求。我的问题是“我想在单独的帮助程序类中构建那个 xml 文件,这是一种方便的方法吗?”我正在使用 Spring for MVC,我可以实现它的任何优点吗?

示例伪代码;

@RestController
@RequestMapping("/rest/menu")
public class MenuController {

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> createUser(@RequestBody JSONObject userInfo){
//Here I need to make a Soap call to retrieve some information
 MyXMLBuilder myXMLBuilder = new MyXMLBuilder(); 
 String soapRequest = myXMLBuilder.build();
}}

这里是助手类;

public class MyXMLBuilder(){
public String build(){
//xml build implementation 
}}

【问题讨论】:

  • build() 方法应该做什么?将一些对象序列化为 XML ?
  • 是的,将对象完全序列化为 xml。
  • 你的对象被注释了?
  • 未注释。我正在通过另一个服务调用创建它们。
  • 你应该注释它们,至少使用@XmlRootElement... 你可以使用 Marshaller 序列化到 StringOutputStream... 看看docs.oracle.com/javase/7/docs/api/javax/xml/bind/…

标签: java xml spring


【解决方案1】:

通常,要使用 SOAP WebService,您将使用 wsimport 工具创建所需的存根,该工具位于 Java SDK 的 /bin 文件夹中。

在您最喜欢的终端中,切换到要在其中创建存根的所需文件夹并键入:

wsimport -keep -verbose http://example.com/myservice?wsdl

然后您可以像这样使用服务存根

MyServiceImplService myService = new MyServiceImplService();
MyService port = myService.getMyServiceImplPort();

port.yourFunction(param1, param2);

【讨论】: