java - 如何在 javax.xml.soap.SOAPBody 中添加 XML 序言

标签 java xml soap

我正在尝试通过 SOAP 将 XML 文档发送到需要有效负载 XML 包含 XML 序言的服务器,例如 <?xml version="1.0" encoding="utf-8" ?> 。以下与我正在使用的代码非常相似:

SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
SOAPPart soapPart = getSoapMessage().getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
soapHeader = envelope.getHeader();
soapBody = envelope.getBody();

soapHeader.detachNode();
SOAPBodyElement bodyElement = soapBody.addBodyElement(getEnvelope().createName("my_element_name"));
bodyElement.addAttribute(getEnvelope().createName("my_attribute_name"), "my_attribute_value");
bodyElement.addChildElement("my_child_element");
...

最佳答案

XML 序言只能存在于 XML 文档的开头。

来自此处提供的 XML 规范:http://www.w3.org/TR/2000/REC-xml-20001006#sec-prolog-dtd

The document type declaration must appear before the first element in the document.

因此,在 SOAP 文档中间编写序言是无效的 - 我怀疑您是否会找到允许您这样做的 SOAP 库或实现。您和/或您的“客户”可能误解了要求。

您可以尝试 XML validator 软件(例如 http://www.w3schools.com/xml/xml_validator.asp ),它应该报告您预期结果的错误。

关于java - 如何在 javax.xml.soap.SOAPBody 中添加 XML 序言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170185/

相关文章:

java - COBOL copybook 中的字符串长度

java - 在没有准备好的语句(JDBC)的情况下防止 SQL 注入(inject)

java - 尝试添加启动画面时出错 - Android 应用程序

java - 如何在没有代码生成的情况下使用来自 WSDL 的完全填充的请求生成 SOAP 消息

java - 我如何在 @Step 注释的 mtd 之前和之后调用我的方法?

ruby - 使用 Nokogiri 构建空白 XML 标签?

xml - XSL : How can I sort a three digit, 连字符分隔值?

java - 在 Java 中是否可以显式返回 401 Unauthorized 响应代码

java - Eclipse 在哪里保存 WSDL 文件?

java - 是否可以绕过单元测试中的某些异常?