java - 用于向soap xml 添加一个新标签的 XSL 文件

标签 java xml web-services xslt soap

我对 XSLT 很陌生。 基本上,我需要通过添加一行以及中间的一些命名空间来更新传入的soap xml。您能建议一个 XSL 帮我做这件事吗? 另一个问题是,我应该将 XSL 文件放置在哪里才能对所有传入请求采取操作?

Incoming Requests:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <consultaRegistros>
         <id>231</id>
         <numero>1231</numero>
         <registros_alta>
            ......
         </registros_alta>
      </consultaRegistros>
   </soapenv:Body>
</soapenv:Envelope>


To be transformed to:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:les="LEServico">
   <soapenv:Header/>
   <soapenv:Body>
        <les:consultaRegistrosReq>
          <consultaRegistros>
             <id>231</id>
             <numero>1231</numero>
             <registros>
                ......
             </registros>
          </consultaRegistros>
        </les:consultaRegistrosReq>
   </soapenv:Body>
</soapenv:Envelope>

最佳答案

你可以改变它:

  <consultaRegistros>
     <id>231</id>
     <numero>1231</numero>
     <registros_alta>
        ......
     </registros_alta>
  </consultaRegistros>

对此:

    <les:consultaRegistrosReq xmlns:les="LEServico">
      <consultaRegistros>
         <id>231</id>
         <numero>1231</numero>
         <registros>
            ......
         </registros>
      </consultaRegistros>
    </les:consultaRegistrosReq>

使用模板规则:

<xsl:template match="consultaRegostros">
  <les:consultaRegistrosReq xmlns:les="LEServico">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </les:consultaRegistrosReq>
</xsl:template> 

<xsl:template match="registros_alta">
  <registros>
      <xsl:apply-templates/>
  </registros>
</xsl:template>  

加上标准的身份规则来复制其他元素不变。

请注意,这不会像示例中那样将命名空间声明放在最外层元素上,但结果是等效的。

我不会建议您如何设置配置来应用此转换,因为我对您的处理环境了解不够。

关于java - 用于向soap xml 添加一个新标签的 XSL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687814/

相关文章:

java - Spring 5.0.0.M3 调用 ApplicationEventListener 时出错 : No ServletContext set - Exception encountered during context initialization

java.lang.RuntimeException : java.net.UnknownHostException:主机未解析:

php - 从 mysql 加载字符串作为 xml

c# - 使用带参数的 JQuery 调用 asmx web 服务导致 500 错误

java - HTTP:要添加什么 header 才能设置字符集?

c# - 如何使用 WS-Security 并从 ASMX Web 服务访问 UsernameToken?

java - 如何在 JSON 中设置参数本地日期

java - FireBase Storage getDownloadUrl()。在 continueWithTask 方法中出现错误

SQL:如何获取 XML 数据类型中的属性值?

sql - 将 XML 导入并分解为 SQL 表