У меня есть оригинальное XML-сообщение, которое выглядит ниже.
<Message>
<Header>
<MsgVerNo>1.0</MsgVerNo>
<SourceId>XXX</SourceId>
<MsgRefNo>1234567890</MsgRefNo>
<LoginId>007</LoginId>
</Header>
<Body>
<![CDATA[<txn>
<id>1234567</id>
<name>XXXX</name>
</txn>]]>
</Body>
</Message>
Я хочу преобразовать его, как показано ниже.и должен быть удален, в то время как дочерние узлы должны остаться.Кроме того, CData, обертка которого также должна быть удалена.
<Message>
<MsgVerNo>1.0</MsgVerNo>
<SourceId>XXX</SourceId>
<MsgRefNo>1234567890</MsgRefNo>
<LoginId>007</LoginId>
<txn>
<record>
<id>1234567</id>
<name>XXXX</name>
</record>
</txn>
</Message>
Я пытался использовать ниже XSLT.Но вывод не желателен.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Header">
<xsl:copy-of select="node()"/>
</xsl:template>
<xsl:template match="Body">
<xsl:copy-of select="node()"/>
</xsl:template>
</xsl:stylesheet>
Вывод
<Message>
<MsgVerNo>1.0</MsgVerNo>
<SourceId>XXX</SourceId>
<MsgRefNo>1234567890</MsgRefNo>
<LoginId>007</LoginId>
<txn>
<id>1234567</id>
<name>XXXX</name>
</txn>
</Message>
У меня пока нет везения.Любая помощь от эксперта, пожалуйста.Спасибо.