我有下面的消息我希望删除Response_OutputData标记。 我已经使用了xpath而不是函数,但似乎没有函数魔法没有在这个
上工作 <open:reponce xmlns:open="http://www.openuri.org/">
<env:hjEnvelope xmlns:env="http://hj.mn.mw/Envelope">
<env:UserId>as</env:UserId>
<env:Sender>as</env:Sender>
<env:MessageId>22195544</env:MessageId>
<env:CorrelationId>1</env:CorrelationId>
<env:GenTimeStamp>1</env:GenTimeStamp>
<env:SentTimeStamp>1</env:SentTimeStamp>
<env:Payload>
<MOP xmlns="http://hj.mn.mw/MOP" xmlns:ns2="http://www.openuri.org/">
<Response>
<Result_OutputData>
<resultCode>0</resultCode>
<reference_ID>90</reference_ID>
</Result_OutputData>
<Response_OutputData>
<SystemName>google</SystemName>
<InterfaceName>nip</InterfaceName>
<ResultCode>0</ResultCode>
<ResultMessage/>
<ReferenceID>90</ReferenceID>
</Response_OutputData>
</Response>
</MOP>
</env:Payload>
</env:hjEnvelope>
</open:reponce>
我的xpath就像这样
//env:hjEnvelope/*[not(local-name()='Response_OutputData')]
但它没有与上面相同的输出 我的预期输出是
<open:reponce xmlns:open="http://www.openuri.org/">
<env:hjEnvelope xmlns:env="http://hj.mn.mw/Envelope">
<env:UserId>as</env:UserId>
<env:Sender>as</env:Sender>
<env:MessageId>22195544</env:MessageId>
<env:CorrelationId>1</env:CorrelationId>
<env:GenTimeStamp>1</env:GenTimeStamp>
<env:SentTimeStamp>1</env:SentTimeStamp>
<env:Payload>
<MOP xmlns="http://hj.mn.mw/MOP" xmlns:ns2="http://www.openuri.org/">
<Response>
<Result_OutputData>
<resultCode>0</resultCode>
<reference_ID>90</reference_ID>
</Result_OutputData>
</Response>
</MOP>
</env:Payload>
</env:hjEnvelope>
</open:reponce>
如何使用xpath实现这一点是可能的还是xquery或xslt 任何人澄清这一点 提前谢谢。
答案 0 :(得分:0)
我们可以为'Response_OutputData'节点定义一些空模板,如下所示:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match ="*[local-name()='Response_OutputData']">
</xsl:template>
</xsl:stylesheet>