Java 将一个新标记添加到soap xml的XSL文件
我不熟悉XSLT。 基本上,我需要通过在中间添加一行名称空间来更新传入的soap xml。你能为我推荐一个XSL吗? 还有一个问题,我应该将XSL文件放在哪里,以便对所有传入的请求执行操作Java 将一个新标记添加到soap xml的XSL文件,java,xml,web-services,xslt,soap,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>
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>
传入请求:
231
1231
......
转化为:
231
1231
......
你能为我推荐一个XSL吗
不,这是一个非常独特的需求,并且没有现成的XSLT示例可以为您提供。您需要学习基本的XSLT并自己制作一个
还有一个问题,我应该将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>
我强烈建议完全跳过XSLT,只需修改传入的SOAPMessage对象以添加您想要添加的元素
你能为我推荐一个XSL吗
不,这是一个非常独特的需求,并且没有现成的XSLT示例可以为您提供。您需要学习基本的XSLT并自己制作一个
还有一个问题,我应该将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>
我强烈建议完全跳过XSLT,只需更改传入的SOAPMessage对象,以添加您要添加的元素。您可以将其转换为:
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros_alta>
......
</registros_alta>
</consultaRegistros>
231
1231
......
为此:
<les:consultaRegistrosReq xmlns:les="LEServico">
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros>
......
</registros>
</consultaRegistros>
</les:consultaRegistrosReq>
231
1231
......
使用模板规则:
<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>
加上标准标识规则,复制其他元素不变
注意,这不会像您的示例中那样将名称空间声明放在最外面的元素上,但结果是等效的
我不建议您如何设置配置以应用此转换,因为我对您的处理环境了解不够 您可以将其转换为:
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros_alta>
......
</registros_alta>
</consultaRegistros>
231
1231
......
为此:
<les:consultaRegistrosReq xmlns:les="LEServico">
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros>
......
</registros>
</consultaRegistros>
</les:consultaRegistrosReq>
231
1231
......
使用模板规则:
<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构建并部署在weblogic上的简单webservice应用程序。我的问题是,我应该将这个XSLT文件添加到java应用程序中的某个位置,还是应该保留在我的应用程序运行的服务器上?将其作为服务器上的文件进行维护,并从java应用程序调用转换。组织它,使您只编译一次样式表,而不是每次使用。感谢您提供的详细信息。我的应用程序是一个用java构建并部署在weblogic上的简单webservice应用程序。我的问题是,我应该将这个XSLT文件添加到java应用程序中的某个位置,还是应该保留在我的应用程序运行的服务器上?将其作为服务器上的文件进行维护,并从java应用程序调用转换。对其进行组织,以便只编译一次样式表,而不是每次使用。